模式簡介
Master-Worker 是經典並行設計模式,將大任務分解為多個子任務並發處理,提升系統吞吐量。核心角色:
- Master:接收任務、分解子任務、分配給 Worker、聚合結果
- Worker:處理具體子任務,返回結果
- Client:提交任務,異步獲取結果

結構設計
Master 維護三個核心數據結構:
- 任務隊列
Queue<Object> workQueue(線程安全用 ConcurrentLinkedQueue)
- Worker 線程映射
Map<String, Thread> threadMap
- 結果集
Map<String, Object> resultMap

核心代碼實現
Master 類
public class Master {
protected Queue
Worker 抽象類
public abstract class Worker implements Runnable {
protected Queue
實戰案例:計算 1-100 立方和
具體 Worker
public class PlusWorker extends Worker {
@Override
public Object handle(Object input) {
Integer i = (Integer) input;
return i * i * i;
}
}
Client 協調邏輯
public class Client {
public static void main(String[] args) {
Master master = new Master(new PlusWorker(), 5); // 5 個 Worker
for (int i = 0; i < 100; i++) master.submit(i);
master.execute();
int sum = 0;
Map resultMap = master.getResultMap();
// 邊計算邊聚合,無需等待所有 Worker 結束
while (resultMap.size() > 0 || !master.isComplete()) {
String key = resultMap.keySet().iterator().next();
Integer val = (Integer) resultMap.remove(key);
if (val != null) sum += val;
}
System.out.println("1^3 + 2^3 + ... + 100^3 = " + sum);
}
}
關鍵優勢
- 異步非阻塞:Master 提交任務即返回,Client 可輪詢部分結果聚合
- 動態擴展:Worker 數量可配置,適應不同硬件資源
- 容錯性:單個 Worker 失敗不影響整體,可重試機制
- 解耦:任務分解邏輯與具體計算邏輯分離
應用場景
- 批量數據處理(ETL、報表生成)
- 並行計算(科學計算、圖像處理)
- 分布式任務調度框架基礎模型
- 高併發請求拆分處理