java壹定要慎重的操干!

日期:2019-03-24 / 人气: / 来源:原创

  当当今不快宜此雕刻个操干,或是没拥有拥有必要终止此雕刻个操干时就直接僵持此雕刻个操干而回去。此雕刻个坚硬是Balking花样比如王某在餐厅吃米饭,当王某需寻求点餐时喊效力动员需寻求点餐。当效力动员A和B邑剩意到了王某点餐的体即兴,此雕刻时效力动员B看到效力动员A曾经去照顾了王某的点餐央寻求,因此效力动员B就不会又度过去照顾王某的点餐央寻求。

  以次示例:以次的需寻求是仿造壹个己触动管的干用。己触动管是为了预备计算机忽然断电或则绵软件忽然出产错的风险,活期将数据管在文件里的干用。

  1、Data类:体即兴能否修改,及修改函数的类2、SaveThread类:活期管3、ChangeThread:修改数据,管文件4、Main:仿造数据

  view plainprint?

  package org.zhy.demo04;

  import java.io.FileWriter;import java.io.IOException;import java.io.Writer; public class Data {

  private final String fileName; //文件名称private String content; //修改情节private boolean changed; //能否却以修改

  //构造函数public Data(String fileName,String content){ this.fileName=fileName;this.content=content;}

  public synchronized void change(String newContent){ content=newContent;changed=true;}

  public synchronized void save(){ if(!changed){ //当changed值为false时直接return出产去return ;}else{ doSave();//调用管方法changed=false; //管后changed的值修改为false } private void doSave(){ System.out.println("线程名称:"+Thread.currentThread()。getName()+",最新需寻求管的值="+content);try { Writer writer=new FileWriter(fileName);writer.write(content);writer.close();} catch (IOException e) { e.printStackTrace();}

  }

  }

  view plainprint?

  package org.zhy.demo04;

  public class SaveThread extends Thread{

  private Data data;public SaveThread(String name,Data data){ super(name);//线程名称this.data=data;}

  public void run(){ try { while(true){ data.save(); //仿造管方法Thread.sleep(1000); //休憩1秒} } catch (Exception e) { e.printStackTrace();}

  view plainprint?

  package org.zhy.demo04;

  import java.util.Random; public class ChangeThread extends Thread{

  private Data data;private Random random=new Random();public ChangeThread(String name,Data data){ super(name);//线程名称this.data=data;} public void run(){ try { for(int i=0;true;i++){ data.change("No:"+i); //仿造的数据Thread.sleep(random.nextInt(1000)); //仿造去做佩的事情data.save();

  //皓白的要寻求要管} } catch (Exception e) { e.printStackTrace();}

  view plainprint?

  package org.zhy.demo04;

  public class Main {

  public static void main(String[] args) { Data data=new Data("data.txt", "我是默许情节"); //文件的名称及文件的默许情节new ChangeThread("ChangeThread", data)。start(); //顺手触动管new SaveThread("SaveThread", data)。start(); //己触动管}

作者:locoy


  • 友情链接:
  • 澳门金沙官网
  • 日博
  • 365体育在线手机版
  • 新2足球网址
  • 澳门新葡京官网
  • Go To Top 回顶部