ThreadPoolExecutor執行緒池相關整理

2022-06-06 20:51:08 字數 479 閱讀 8066

threadpoolexecutor 提供了兩個方法,用於執行緒池的關閉,分別是:

實際場景下,一般會結合這兩個方法,一起實現執行緒池的優雅關閉。示例**如下:

void shutdownandawaittermination(executorservice pool) 

}} catch (interruptedexception ie)

}

因為很顯然,執行緒等待時間所佔比例越高,需要越多執行緒。執行緒cpu時間所佔比例越高,需要越少執行緒。

下面舉個例子:比如平均每個執行緒 cpu 執行時間為 0.5s ,而執行緒等待時間(非 cpu 執行時間,比如 io)為 1.5s ,cpu 核心數為 8 。 那麼根據上面這個公式估算得到:((0.5 + 1.5) / 0.5) * 8 = 32。這個公式進一步轉化為:最佳執行緒數目 = (執行緒等待時間與執行緒 cpu 時間之比 + 1)* cpu數目。

showtooltip

ThreadPoolExecutor執行緒池原始碼解讀

主要變數 private volatile int corepoolsize private volatile int maximumpoolsize private volatile int poolsize 建構函式 也就是建立類的時候,需要注入引數。public threadpoolexecu...

ThreadPoolExecutor執行緒池引數設定

jdk1.5中引入了強大的concurrent包,其中最常用的莫過了執行緒池的實現threadpoolexecutor,它給我們帶來了極大的方便,但同時,對於該執行緒池不恰當的設定也可能使其效率並不能達到預期的效果,甚至僅相當於或低於單執行緒的效率。threadpoolexecutor類可設定的引數...

ThreadPoolExecutor執行緒池

python中已經有了threading模組,為什麼還需要執行緒池呢,執行緒池又是什麼東西呢?在介紹執行緒同步的訊號量機制的時候,舉得例子是爬蟲的例子,需要控制同時爬取的執行緒數,例子中建立了20個執行緒,而同時只允許3個執行緒在執行,但是20個執行緒都需要建立和銷毀,執行緒的建立是需要消耗系統資源...