在實際使用中,執行緒是很占用系統資源的,如果對執行緒管理不善很容易導致系統問題。因此,在大多數併發框架中都會使用執行緒池來管理執行緒,使用執行緒池管理執行緒主要有如下好處:
執行緒池的常用型別主要有如下三大類:
建立乙個可根據需要建立新執行緒的執行緒池,但是在以前構造的執行緒可用時將重用它們,並在需要時使用提供的threadfactory建立新執行緒。特徵:(1)執行緒池中數量沒有固定,可達到最大(integer.max_value)
(2)執行緒池中的執行緒可進行快取重複利用和**(**預設時間為1分鐘)
(3)當執行緒池中,沒有可用執行緒,會重新建立乙個執行緒
建立乙個可重用固定執行緒數的執行緒池,以共享的無界佇列方式來執行這些執行緒。在任意點,在大多數nthreads執行緒會處於處理任務的活動狀態。如果在所有執行緒處於活動狀態時提交附加任務,則在有可用執行緒之前,附加任務將在佇列中等待。如果在關閉前的執行期間由於失敗而導致任何執行緒終止,那麼有乙個新執行緒將替代它執行後續的任務(如果需要)。在某個執行緒被顯示地關閉之前,池中的執行緒將一直存在。特徵:(1)執行緒池中的執行緒處於一定的量,可以很好的控制線程的併發量
(2)執行緒可以重複被使用,在顯示關閉之前,都將一直存在
(3)超出一定量的執行緒被提交時候需要在佇列中等待
建立乙個使用單個worker執行緒的executor,以無界佇列的方式來執行該執行緒(注意:如果因為在關閉前的執行期間出現失敗而終止了此單個執行緒,那麼如果需要,乙個新執行緒將替代它執行後續的任務)可保證順序的執行各個任務,並且在任意給定的時間不會有多個執行緒是活動的。與其他等效的newfixedthreadpool(1)不同,可保證無需重新配置此方法所返回的執行程式即可使用其他的執行緒特徵:(1)執行緒池中最多執行1個執行緒,之後提交的執行緒活動將會排在佇列中以此執行
建立乙個單執行緒執行程式,它可安排在給定延遲後執行命令或者定期執行特徵:(1)執行緒池中最多執行1個執行緒,之後提交的執行緒活動將會排在佇列中以此執行
(2)可定時或延遲執行執行緒活動
建立乙個執行緒池,它可安排在給定延遲後執行命令或者定期執行。特徵:(1)執行緒池中具有指定數量的執行緒,即便是空執行緒也將保留
(2)可定時或者延遲執行執行緒活動
建立乙個帶並行級別的執行緒池,並行級別決定了同一時刻最多有多少個執行緒在執行,如不傳入並行級別引數,將預設為當前系統的cpu個數
執行緒池分類
executor介面 執行器 裡面有乙個方法void execute runnable command 執行runnable這個任務,下面是executor介面原始碼 public inte ce executorexecutorservice介面 執行器服務,一堆執行器在等著扔任務,你扔了乙個ru...
python 執行緒池 Python的執行緒池
usr bin env python coding utf 8 concurrent 用於執行緒池和程序池程式設計而且更加容易,在python3.2中才有。import sys from concurrent.futures import threadpoolexecutor,as complete...
執行緒 執行緒池
執行緒池是一種多執行緒處理形式,處理過程中將任務新增到佇列,然後在建立執行緒後執行,主要實現 建立執行緒和管理執行緒,並且給執行緒分配任務。執行緒池中的執行緒是併發執行的。乙個比較簡單的執行緒池至少應包含執行緒池管理器 工作執行緒 任務列隊 任務介面等部分。其中執行緒池管理器的作用是建立 銷毀並管理...