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