簡單來說 Executor 和 Worker 構(gòu)成了生產(chǎn)者消費者的模型,臨界資源使用BlockQueue存儲

任務(wù)的流轉(zhuǎn)
而Worker作為消費者可以簡化為以下偽代碼
private BlockQueue<Runnable> workQueue = new BlockQueue<>();
public class Worker implements Runnable {
public void run() {
runWorker();
}
public void runWorker(){
Runnable task;
while ((task = workQueue.take()) != null) {
task.run();
}
}
}
而Executor作為生產(chǎn)者可以簡化為以下偽代碼
public class Executor {
public void execute(Runnable command) {
if(isRunning()) {
// 根據(jù)現(xiàn)有線程個數(shù)判斷是推送臨界區(qū)workQueue.offer(command)
// 還是 addWorker (Runnable)
} else {
reject(command);
}
}
}