<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 張金鵬 閱讀(538) 評論(0)  編輯  收藏 所屬分類: 多執行緒模式
    主站蜘蛛池模板: 成人免费无码大片a毛片| 五月天婷婷免费视频| 99久久久国产精品免费牛牛| 久久久久一级精品亚洲国产成人综合AV区 | 巨胸喷奶水www永久免费| 亚洲精品A在线观看| 一级一黄在线观看视频免费| 亚洲精品456播放| 国产成年无码久久久免费| 亚洲AV综合色区无码一区| 91精品全国免费观看含羞草| 久久亚洲精品中文字幕| 久久国内免费视频| 亚洲av日韩aⅴ无码色老头| 国产91久久久久久久免费| 国产乱妇高清无乱码免费| 亚洲国产成人精品无码区在线观看 | 免费国产va在线观看| 亚洲国产一成人久久精品| 91精品国产免费| 亚洲日本天堂在线| 亚洲成A人片在线观看无码3D| 亚欧乱色国产精品免费视频| 亚洲AV日韩AV鸥美在线观看| 99re6热视频精品免费观看| 亚洲1区1区3区4区产品乱码芒果| 国产乱子伦精品免费无码专区| 全黄A免费一级毛片| 久久亚洲AV无码精品色午夜麻| 99re热免费精品视频观看| 国产AV日韩A∨亚洲AV电影| 国产AV无码专区亚洲AV男同| 日韩免费精品视频| 一级黄色毛片免费看| 亚洲综合久久1区2区3区| 全部免费国产潢色一级| 久久免费国产精品一区二区| 亚洲一区二区三区成人网站| 精品国产日韩亚洲一区| 99久久综合国产精品免费| 国产高潮流白浆喷水免费A片 |