<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)  編輯  收藏 所屬分類: 多執行緒模式
    主站蜘蛛池模板: 亚洲av永久无码嘿嘿嘿| 亚洲午夜久久久久妓女影院| 久久精品国产亚洲AV无码麻豆| 国产乱子伦精品免费视频| 亚洲精品动漫人成3d在线| 午夜免费国产体验区免费的| 国产大片线上免费看| 国产亚洲精品2021自在线| 国产国产成年年人免费看片| 美女视频黄a视频全免费网站一区| 免费网站看v片在线香蕉| MM1313亚洲国产精品| 四虎影视永久免费观看网址| 无码免费又爽又高潮喷水的视频| 亚洲av手机在线观看| 免费无码AV一区二区| 国产猛烈高潮尖叫视频免费| 猫咪免费人成在线网站 | 亚洲性无码AV中文字幕| 成人毛片18女人毛片免费| 国产精品亚洲五月天高清| 亚洲国产一区二区三区| 精品视频一区二区三区免费| 亚洲黄色高清视频| 最近最好的中文字幕2019免费| 日韩欧美亚洲中文乱码| 久久久久久久亚洲精品| 99热免费在线观看| 亚洲精品美女久久久久久久| 精品国产人成亚洲区| 亚洲视频免费在线观看| 亚洲欧美乱色情图片| 国产亚洲精品无码专区| 永久看日本大片免费35分钟| 亚洲av无码一区二区三区人妖| 国产国拍亚洲精品福利| 久视频精品免费观看99| 麻豆69堂免费视频| 亚洲毛片在线观看| 国产高清视频在线免费观看| a级精品九九九大片免费看|