<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
    考慮這麼一個伺服器,它可以處理來自多個客戶端的服務請求(Request),為了不丟失客戶的請求,它要維持一個緩衝區,客戶的請求會先儲存至緩衝區中,而伺服器會從緩衝區中取出請求並執行,如果緩衝區中沒有請求,則伺服器就等待,直到被通知有新的請求存入緩衝區中,伺服器再度進行請求的執行。

    關於這個描述的一個簡單 UML 順序圖如下所示:
    GuardedSuspension

    首先要考慮到,緩衝區會同時被兩個以上的執行緒進行存取,即伺服器的請求處理執行緒與客戶端執行緒,所以必須對緩衝區進行防護。

    再來是當緩衝區中沒有請求時,伺服器必須等待直到被通知有新的請求。

    Guarded Suspension模式關注的是執行的流程架構,以Java來實現這個架構的話如下所示:
    • RequestQueue.java
    public class RequestQueue {
    private java.util.LinkedList queue;
    public RequestQueue() {
    queue = new java.util.LinkedList();
    }

    public synchronized Request getRequest() {
    while(queue.size() <= 0) {
    try {
    wait();
    }
    catch(InterruptedException e) {}
    }
    return (Request) queue.removeFirst();
    }

    public synchronized void putRequest(Request request) {
    queue.addLast(request);
    notifyAll();
    }
    }

    一個例子是多人聊天伺服器,請求可能只是一個客戶端送出的聊天訊息,聊天訊息會先存至緩衝區中,伺服器會不斷的從緩衝區中取出聊天訊息並發給客戶端,如果緩衝區中沒有新訊息,則伺服器就進入等待,直到有一個客戶端發出聊天訊息並存入緩衝區中,此時伺服器再度被通知,然後再度取出訊息並進行發送。
    posted on 2007-04-17 10:54 張金鵬 閱讀(306) 評論(0)  編輯  收藏 所屬分類: 多執行緒模式
    主站蜘蛛池模板: 亚洲人成网站色7799| 亚洲黄黄黄网站在线观看| 亚洲爆乳大丰满无码专区| 亚洲av色影在线| 亚洲乱码无码永久不卡在线| 女人18特级一级毛片免费视频| a级毛片免费全部播放无码| 亚洲中文字幕无码av在线| 亚洲电影一区二区| 亚洲国产精品无码一线岛国| 亚洲综合区小说区激情区| 国产乱人免费视频| 免费在线一级毛片| 亚洲国产午夜福利在线播放| 免费人成视频在线| 欧美三级在线电影免费| 91精品国产免费久久久久久青草| 免费人成网站在线观看不卡 | 国产裸体美女永久免费无遮挡| 亚洲欧洲av综合色无码| 亚洲日韩乱码中文字幕| 亚洲精品动漫免费二区| 极品美女一级毛片免费| 亚洲欧洲日韩国产一区二区三区| 亚洲AV无码久久| 亚洲福利视频一区二区三区| 亚洲中文字幕第一页在线 | 亚洲日本中文字幕| 亚洲一级片在线播放| 成人精品国产亚洲欧洲| 国产又黄又爽又大的免费视频 | 四虎永久免费地址在线网站 | 免费福利电影在线观看| 无人在线观看免费高清视频| 免费一级成人毛片| 久久精品国产精品亚洲艾草网| 亚洲欧洲一区二区| 特黄特色的大片观看免费视频| 免费观看91视频| 久久久久亚洲AV无码专区网站 | 亚洲中文字幕伊人久久无码|