常用的執行緒池

2021-07-28 08:14:11 字數 994 閱讀 2270

一:newcachedthreadpool

(1)快取型池子,先檢視池中有沒有以前建立的執行緒,如果有,就reuse,如果沒有,就建立乙個新的執行緒加入池中;

(2)快取型池子,通常用於執行一些生存週期很短的非同步型任務;因此一些面向連線的daemon型server中用得不多;

(3)能reuse的執行緒,必須是timeout idle內的池中線程,預設timeout是60s,超過這個idle時長,執行緒例項將被終止及移出池。

(4)注意,放入cachedthreadpool的執行緒不必擔心其結束,超過timeout不活動,其會自動被終止

二:newfixedthreadpool

(1)newfixedthreadpool與cachethreadpool差不多,也是能reuse就用,但不能隨時建新的執行緒

(2)其獨特之處:任意時間點,最多只能有固定數目的活動執行緒存在,此時如果有新的執行緒要建立,只能放在另外的佇列中等待,直到當前的執行緒中某個執行緒終止直接被移出池子

(3)和cachethreadpool不同,fixedthreadpool沒有idle機制(可能也有,但既然文件沒提,肯定非常長,類似依賴上層的tcp或udp idle機制之類的),所以fixedthreadpool多數針對一些很穩定很固定的正規併發執行緒,多用於伺服器

(4)從方法的源**看,cache池和fixed 池呼叫的是同乙個底層池,只不過引數不同:

fixed池執行緒數固定,並且是0秒idle(無idle)

cache池執行緒數支援0-integer.max_value(顯然完全沒考慮主機的資源承受能力),60秒idle 

三:scheduledthreadpool

(1)排程型執行緒池

(2)這個池子裡的執行緒可以按schedule依次delay執行,或週期執行

四:singlethreadexecutor

(1)單例執行緒,任意時間池中只能有乙個執行緒

(2)用的是和cache池和fixed池相同的底層池,但執行緒數目是1-1,0秒idle(無idle)

常用的執行緒池有哪些?

newfixedthreadpool 建立固定大小的執行緒池,每次提交乙個任務就建立乙個執行緒,直到執行緒達到執行緒池的最大大小 newcachedthreadpool 建立乙個可快取的執行緒池,此執行緒池不會對執行緒池大小做限制,執行緒池大小完全依賴於 作業系統 或者說 jvm 能夠建立的最大執行...

python 執行緒池 Python的執行緒池

usr bin env python coding utf 8 concurrent 用於執行緒池和程序池程式設計而且更加容易,在python3.2中才有。import sys from concurrent.futures import threadpoolexecutor,as complete...

執行緒 執行緒池

執行緒池是一種多執行緒處理形式,處理過程中將任務新增到佇列,然後在建立執行緒後執行,主要實現 建立執行緒和管理執行緒,並且給執行緒分配任務。執行緒池中的執行緒是併發執行的。乙個比較簡單的執行緒池至少應包含執行緒池管理器 工作執行緒 任務列隊 任務介面等部分。其中執行緒池管理器的作用是建立 銷毀並管理...