一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java多線程模式之Balking模式詳解

Java多線程模式之Balking模式詳解

2020-11-12 17:25qq7342272 Java教程

這篇文章主要介紹了Java多線程模式之Balking模式,結合實例形式較為詳細的分析了Balking模式的原理、用法與相關注意事項,需要的朋友可以參考下

本文實例講述了Java多線程模式之Balking模式。分享給大家供大家參考,具體如下:

當現在不適合這個操作,或是沒有必要進行這個操作時就直接放棄這個操作而回去。這個就是Balking模式

例如王某在餐廳吃飯,當王某需要點餐時喊服務員需要點餐。當服務員A和B都注意到了王某點餐的示意,這時服務員B看到服務員A已經去響應了王某的點餐請求,所以服務員B就不會再過去響應王某的點餐請求。

程序示例:

程序的需求是模擬一個自動保存的功能。自動保存是為了預防計算機忽然斷電或則軟件突然出錯的危險,定期將數據保存在文件里的功能。

1、Data類:表示是否修改,及修改函數的類
2、SaveThread類:定期保存
3、ChangeThread:修改數據,保存文件
4、Main:模擬數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package org.zhy.demo04;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
/**
 * 表示是否修改,及修改函數的類
 * @author zhengyi
 *
 */
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;
  }
  /**
   * 新的修改內容 如果有新的需要保存的數據,changed的屬性修改為true
   * 注:這個方法是用synchronized修飾的
   * 為了保護content與changed屬性用
   * synchronized修飾后就只能同時有
   * 1個線程訪問也就防止了多線程造成的臟數據
   * @param newContent
   */
  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();
    }
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package org.zhy.demo04;
/**
 * 定期保存的類
 * @author zhengyi
 *
 */
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();
    }
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package org.zhy.demo04;
import java.util.Random;
/**
 * 修改數據,保存文件的類
 * @author zhengyi
 *
 */
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();
    }
  }
}
?
1
2
3
4
5
6
7
8
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(); //自動保存
  }
}

運行結果:

Java多線程模式之Balking模式詳解

什么時候使用Balking模式?

1、不需要刻意去執行的時候
2、不想等待警戒條件時
3、警戒條件只有一次成立時

希望本文所述對大家java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎在线视频免费观看视频 | 国产在线看片网站 | 蘑菇香蕉茄子绿巨人丝瓜草莓 | 99久久伊人一区二区yy5099 | 久久视频在线视频观看天天看视频 | 久久黄色免费 | 喷潮女王cytherea全部视频 | 久久免费看少妇高潮A片JA | 1024亚洲天堂 | bnb99八度免费影院 | 久久国产精品永久免费网站 | 91亚洲一区二区在线观看不卡 | 男人综合网| 亚洲va久久久久综合 | 欧美一区二区三区在线观看免费 | 深夜福利影院在线观看 | 国产欧美日韩视频在线观看一区二区 | www.国产在线观看 | 人人人人看人人人做人人 | 日韩精品免费一级视频 | 青青草亚洲| 日韩欧美国产一区二区三区 | 国产123区| 精品国产一区二区在线观看 | 按摩院已婚妇女中文字幕 | 国产精品成 | 999国产高清在线精品 | 十六以下岁女子毛片免费 | 日本精品欧洲www | 亚洲天堂网站在线 | 九九精品视频一区二区三区 | 清纯漂亮女友初尝性过程 | 久久久久久久久女黄 | 日本老熟老太hd | 久久热这里面只有精品 | 国产aaa毛片| 卫生间被教官做好爽HH视频 | 桃色综合网 | 亚洲爱视频 | 免费一区视频 | 男人狂躁女人下面的视频免费 |