国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

多線程編程的設計模式 臨界區模式

2019-11-18 15:29:53
字體:
來源:轉載
供稿:網友

臨界區模式 Critical Section Pattern 是指在一個共享范圍中只讓一個線程執行的模式.
它是所有其它多線程設計模式的基礎,所以我首先來介紹它.
把著眼點放在范圍上,這個模式叫臨界區模式,假如把作眼點放在執行的線程上,這個模式就叫
單線程執行模式.

首先我們來玩一個鉆山洞的游戲,我 Axman,朋友 Sager,同事 Pentium4.三個人在八角游樂場
循環鉆山洞(KAO,減肥練習啊),每個人手里有一個牌子,每鉆一次洞口的老頭會把當前的次序,
姓名,牌號顯示出來,并檢查名字與牌號是否一致.

OK,這個游戲的參與者有游樂場老頭Geezer,Player,就是我們,還有山洞 corrie.

public class Geezer {
    public static void main(String[] args){
       
        System.out.        Corrie c = new Corrie();//只有一個山洞,所以生存一個實例后傳給多個Player.
        new Player("Axman","001",c).start();
        new Player("Sager","002",c).start();
        new Player("Pentium4","003",c).start();
    }
}

這個類暫時沒有什么多說的,它是一個Main的角色.

public class Player extends Thread{
    private final String name;
    private final String number;
    private final Corrie corrie;
    public Player(String name,String number,Corrie corrie) {
        this.name = name;
        this.number = number;
        this.corrie = corrie;
    }
   
    public void run(){
        while(true){
            this.corrie.into(this.name,this.number);
        }
    }
}
在這里,我們把成員字段都設成final的,為了說明一個Player一旦構造,他的名字和牌號就不能改
變,簡單說在游戲中,我,Sager,Pentium4三個人不會自己偷偷把自己的牌號換了,也不會偷偷地去
鉆別的山洞,假如這個游戲一旦發生錯誤,那么錯誤不在我們玩家.

import java.util.*;
public class Corrie {
    private int count = 0;
    private String name;
    private String number;
    private HashMap lib = new HashMap();//保存姓名與牌號的庫
   
    public Corrie(){
       
        lib.put("Axman","001");
        lib.put("Sager","002");
        lib.put("Pentium4","003");
 
    }
   
    public void into(String name,String number){
        this.count ++;
        this.name = name;
        this.number = number;
        if(this.lib.get(name).equals(number))
 test():
    }
   
    public String display(){
        return this.count+": " + this.name + "(" + this.number + ")";
    }



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肇州县| 平南县| 绿春县| 阜宁县| 金堂县| 东乡| 岐山县| 密山市| 冕宁县| 涿州市| 德兴市| 浦县| 刚察县| 土默特左旗| 聂荣县| 佛学| 渭南市| 逊克县| 关岭| 建德市| 广丰县| 万安县| 修水县| 柘荣县| 温宿县| 资阳市| 松潘县| 天台县| 北京市| 通城县| 正镶白旗| 黄骅市| 利川市| 莫力| 西昌市| 邢台县| 宣恩县| 巴东县| 土默特左旗| 泊头市| 成安县|