精華區beta java 關於我們 聯絡資訊
※ 引述《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)