“既生 ExecutorService, 何生 CompletionService?”
阿新 • • 發佈:2020-08-12
![](https://img2020.cnblogs.com/other/1583165/202008/1583165-20200812090849846-1960719638.png)
## 前言
在 [我會手動建立執行緒,為什麼要使用執行緒池?](https://dayarch.top/p/why-we-need-to-use-threadpool.html) 中詳細的介紹了 ExecutorService,可以將整塊任務拆分做簡單的並行處理;
在 [不會用Java Future,我懷疑你泡茶沒我快](https://dayarch.top/p/java-future-and-callable.html) 中又詳細的介紹了 Future 的使用,填補了 Runnable 不能獲取執行緒執行結果的空缺
將二者結合起來使用看似要一招吃天下了(Java有併發,併發之大,一口吃不下), but ~~ 是我太天真
##
## ExecutorService VS CompletionService
假設我們有 4 個任務(A, B, C, D)用來執行復雜的計算,每個任務的執行時間隨著輸入引數的不同而不同,如果將任務提交到 ExecutorService, 相信你已經可以“信手拈來”
```java
ExecutorService executorService = Executors.newFixedThreadPool(