CompletableFuture必須加上執行緒池!!

coldcodeDong發表於2024-08-02

一個task:並行查詢三張表,同時,每張表都需要查詢很多key,我才用了CompletableFuture,並行三個任務,每個任務中,我又對查詢的key進行分片,再次提交了CompletableFuture,我以為外面並行3個任務,不需要提交到執行緒池中,所以僅僅在查分片key的多個任務中定義了執行緒池。
但是同時我對list進行了parallelStream,最終由於沒有在suppyAsync中新增執行緒池被mentor說了一頓,發現大神們都非常細心。。。
原來:
CompletableFuture在CPU核心數大於2時,會與forkJoin採用的預設執行緒池,而我非同步任務裡執行多個分片非同步任務,會導致一直阻塞。
查表大約3ms,但是多個key分片後,可能會有一些問題。

記住,以後:CompletableFuture必須加上執行緒池!!

相關文章