国产探花免费观看_亚洲丰满少妇自慰呻吟_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 + ")";
    }



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长治县| 仁寿县| 会东县| 府谷县| 全椒县| 裕民县| 颍上县| 平果县| 宾川县| 赤壁市| 新竹市| 长海县| 呼图壁县| 河东区| 定日县| 汤阴县| 三江| 贵阳市| 桂阳县| 玉门市| 丁青县| 平南县| 巴南区| 独山县| 朝阳县| 壶关县| 博野县| 西城区| 九江市| 阳原县| 郧西县| 绩溪县| 乐至县| 盐山县| 富蕴县| 镇安县| 苍梧县| 淮南市| 大悟县| 乌苏市| 土默特左旗|