<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    細心!用心!耐心!

    吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學業,五六點粗墨,七八筆買賣,九十道人情。

    BlogJava 聯系 聚合 管理
      1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks
    Worker Thread模式在Request的管理上像是 Producer Consumer 模式,在Request的行為上像是 Command 模式

    Producer Consumer模式專注於Product的生產與消費,至於Product被消費時是作何處理,則不在它的討論範圍之中。
    WorkerThread

    如果您的Product是一個Request,消費者取得Request之後,執行Request中指定的請求方法,也就是使用Command模式,並且您的Request緩衝區還管理了Consumer,就有Worker Thread模式的意思了。
    WorkerThread

    在Sequence Diagram上,可以看出Worker Thread同時展現了Producer Consumer模式與Command模式:
    WorkThread
    利用Java實現的一個Channel類如下所示:
    • Channel.java
    import java.util.LinkedList; 

    public class Channel {
    private LinkedList requests;
    private WorkerThread[] workerThreads;

    public Channel(int threadNumber) {
    requests = new LinkedList();
    workerThreads = new WorkerThread[threadNumber];
    for(int i = 0; i < workerThreads.size(); i++) {
    workerThreads[i] = new WorkerThread();
    workerThreads[i].start();
    }
    }

    public synchronized void putRequest(Request request) {
    while(requests.size() >= 2) { // 容量限制為 2
    try {
    wait();
    }
    catch(InterruptedException e) {}
    }

    requests.addLast(request);
    notifyAll();
    }

    public synchronized Request getProduct() {
    while(requests.size() <= 0) {
    try {
    wait();
    }
    catch(InterruptedException e) {}
    }

    Request request = (Request) requests.removeFirst();
    notifyAll();

    return request;
    }
    }

    Request類與WorkerThread類之間採的Command模式:
    • Request.java
    public class Request() { 
    // ....

    public void execute() {
    // do some work....
    }
    }

    • WorkerThread.java
    public class WorkerThread extends Thread { 
    // ...

    public void run() {
    while(true) {
    Request request = channel.getRequest();
    request.execute();
    }
    }
    }

    就行為上,WorkerThread就是有請求來了就作,如果沒有請求,則所有的WorkerThread就等待,直到有新的工作進來而通知它們,取得請求的WorkerThread要作的工作,就直接定義在execute()中。

    posted on 2007-04-17 10:56 張金鵬 閱讀(545) 評論(0)  編輯  收藏 所屬分類: 多執行緒模式
    主站蜘蛛池模板: 亚洲xxxxxx| 中文字幕无码精品亚洲资源网| 久久免费动漫品精老司机| 在线观看人成视频免费无遮挡 | 精品国产亚洲男女在线线电影| 久久亚洲欧美国产精品| 一级做α爱过程免费视频| 日本免费中文视频| 亚洲免费在线视频| 亚洲成a人片在线不卡一二三区 | 免费在线观看亚洲| 两个人看的www免费高清| 我的小后妈韩剧在线看免费高清版 | 免费国产高清毛不卡片基地| 久久免费观看国产精品88av| 亚洲av综合avav中文| 亚洲欧美自偷自拍另类视| 中文字幕久无码免费久久| 亚洲AV无码国产精品色午友在线| 久久久久久久99精品免费观看 | 美女裸身网站免费看免费网站| 亚洲黄色激情视频| 免费无码黄网站在线看| 日韩免费三级电影| 亚洲av综合avav中文| 日韩在线不卡免费视频一区| 人人狠狠综合久久亚洲高清| 亚洲国产成人久久综合一区| 青青操视频在线免费观看| 777亚洲精品乱码久久久久久| 搜日本一区二区三区免费高清视频 | 日韩吃奶摸下AA片免费观看| 中文字幕亚洲一区二区va在线| 亚洲AV男人的天堂在线观看| 最近中文字幕mv免费高清视频8| 久久精品国产精品亚洲| 日韩在线不卡免费视频一区| 久久久久亚洲国产AV麻豆| 亚洲狠狠婷婷综合久久久久| 日本免费精品一区二区三区| 亚洲av综合avav中文|