企业做不做网站的坏处,企业高端网站建设需要注意哪些事项,租赁公司租赁业务,平面设计比较好的网站Balking模式 所谓Balk就是停止并返回的意思。 如果守护条件不成立#xff0c;则立即中断处理。 因为Guarded Suspension模式是一直等待至可以运行。
当写入的内容与上次写入的内容完全相同时#xff0c; 再向文件写入就显得多余了#xff0c; 所以就不再执行写入操作。 也就…Balking模式 所谓Balk就是停止并返回的意思。 如果守护条件不成立则立即中断处理。 因为Guarded Suspension模式是一直等待至可以运行。
当写入的内容与上次写入的内容完全相同时 再向文件写入就显得多余了 所以就不再执行写入操作。 也就是说该程序以数据内容存在不同作为守护条件 如果数据内容相同则不执行写入操作直接返回balk. 在此我们来思考以下文本工具的自动保存功能。 所谓自动保存功能就是为了防止电脑突然死机 而定期地将数据保存到文件中的功能。
Data 表示可以修改并保存的数据的类 SaveThread 定期保存数据内容的类 ChangerThread 修改并保存数据内容的类 Main 测试程序行为的类
当看到synchronized时就应该思考一下这个synchronized 在保护着什么
public class ChangerThread extends Thread{private final Data data;private final Random random new Random();public ChangerThread(String name,Data data){super(name);this.data data;}public void run(){try{for(int i0;true;i){data.changed(No.i);Thread.sleep(random.nextInt(1000));data.save();}} catch (InterruptedException e){e.printStackTrace();} catch (IOException e){e.printStackTrace();}}
}
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;this.changed changed;}public synchronized void changed(String newContent){content newContent;changed true;}public synchronized void save() throws IOException{if(!changed){return;}doSave();changed false;}private void doSave() throws IOException{System.out.println(Thread.currentThread().getName() calls doSave,content content);Writer writer new FileWriter(filename);writer.write(content);writer.close();}
}
public class SaveThread extends Thread{private final Data data;public SaveThread(String name,Data data){super(name);this.data data;}public void run(){try{while(true){data.save();Thread.sleep(1000);}}catch (IOException e){e.printStackTrace();}catch (InterruptedException e){e.printStackTrace();}}
}
public class Main{public static void main(String[] args) {Data data new Data(data.txt,(empty));new ChangerThread(ChangerThread,data).start();new SaveThread(saveThread,data).start();}}