※ 引述《Lordaeron (Terry)》之銘言:
: ※ 引述《H45 (!H45)》之銘言:
: : MultiThread 的 Worker Pattern 吧
: : http://www.java2s.com/Code/Java/Design-Pattern/WorkerThreadPatterninJava.htm
: : 也就是少數幾個 thread, 處理很多個 Client
: 請好好的解讀一下它在寫什麼, 有什麼情形可以這樣做, 什麼情形
: 不能這樣做. 不要只丟出一個code, 就當作是哪麼一回事.
: 簡單的講, 如果一個thread 要做的事就像該example 哪麼簡單,
: 還需要你來寫程式嗎?
[站內信件]
對不起
我承認我只是從 google 上面隨意找一篇符合 Worker Pattern 的文章
然後簡單地把連結丟上來而已
我起初看到 Worker Pattern 是從一本書學到的:
Java Multithread Design Pattern (博碩文化)
嗯...既然有人想知道更多,那我就獻個醜...
舉一個 Worker Pattern 的實例:
「一個工廠有 5 個工人,他們每天做的事情就是處理各式各樣的要求。」 (結束)
上面這句話的意思是:
工廠指的是一個Thread Pool
工人指的就是Thread本身
各式各樣的要求就是Runnable Object
換句話說就是:
「一個Thread Pool有 5 個Thread, 這些Thread一直做各式各樣的Runnable Object.」
寫成程式碼就變成:
// MAIN 函式可能長這樣
Factory factory = new Factory(5); // 建立一個工廠,聘請 5 個員工
factory.addRequest(...); // 丟請求給這個工廠去做
// Factory 類別可能長這樣
Queue reqeust; // 工作內容佇列
Worker[] workers; // 工人陣列
void addRequest(Runnable request); // 加入工作內容的方法
Runnable getRequest(); // 取得工作內容的方法
//Worker 類別可能長這樣
public class Worker extends Thread { // 繼承Thread類別
public void run() {
while(true) {
getRequest().run(); // 取得工作內容並執行
}
}
}
唔...如果有錯...請指正
[站內信件]
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.205.85
※ 編輯: H45 來自: 140.115.205.85 (11/18 19:09)