五種執行緒池

2021-09-02 01:16:56 字數 2102 閱讀 9731

1、newcachedthreadpool可快取執行緒池

作用:建立乙個可根據需要建立新執行緒的執行緒池,但是在以前構造的執行緒可用時將重用它們,並在需要時使用提供的 threadfactory 建立新執行緒。

特徵:(1)執行緒池中數量沒有固定,可達到最大值(interger. max_value)

(2)執行緒池中的執行緒可進行快取重複利用和**(**預設時間為1分鐘)

(3)當執行緒池中,沒有可用執行緒,會重新建立乙個執行緒

建立方式: executors.newcachedthreadpool()

2、newfixedthreadpool固定數量執行緒池

作用:建立乙個可重用固定執行緒數的執行緒池,以共享的無界佇列方式來執行這些執行緒。在任意點,在大多數 nthreads 執行緒會處於處理任務的活動狀態。如果在所有執行緒處於活動狀態時提交附加任務,則在有可用執行緒之前,附加任務將在佇列中等待。如果在關閉前的執行期間由於失敗而導致任何執行緒終止,那麼乙個新執行緒將代替它執行後續的任務(如果需要)。在某個執行緒被顯式地關閉之前,池中的執行緒將一直存在。

特徵:(1)執行緒池中的執行緒處於一定的量,可以很好的控制線程的併發量

(2)執行緒可以重複被使用,在顯示關閉之前,都將一直存在

(3)超出一定量的執行緒被提交時候需在佇列中等待

建立方式:

(1)executors.newfixedthreadpool(int nthreads);//nthreads為執行緒的數量

(2)executors.newfixedthreadpool(int nthreads,threadfactory threadfactory);//nthreads為執行緒的數量,threadfactory建立執行緒的工廠方式

3、newsinglethreadexecutor單執行緒執行緒池

作用:建立乙個使用單個 worker 執行緒的 executor,以無界佇列方式來執行該執行緒。(注意,如果因為在關閉前的執行期間出現失敗而終止了此單個執行緒,那麼如果需要,乙個新執行緒將代替它執行後續的任務)。可保證順序地執行各個任務,並且在任意給定的時間不會有多個執行緒是活動的。與其他等效的 newfixedthreadpool(1) 不同,可保證無需重新配置此方法所返回的執行程式即可使用其他的執行緒。

特徵:(1)執行緒池中最多執行1個執行緒,之後提交的執行緒活動將會排在佇列中以此執行

建立方式:

(1)executors.newsinglethreadexecutor() ;

(2)executors.newsinglethreadexecutor(threadfactory threadfactory);// threadfactory建立執行緒的工廠方式

4、newschedulethreadpool定時執行執行緒池

作用: 建立乙個執行緒池,它可安排在給定延遲後執行命令或者定期地執行。

特徵:(1)執行緒池中具有指定數量的執行緒,即便是空執行緒也將保留

(2)可定時或者延遲執行執行緒活動

建立方式:

(1)executors.newscheduledthreadpool(int corepoolsize);// corepoolsize執行緒的個數

(2)newscheduledthreadpool(int corepoolsize, threadfactory threadfactory);// corepoolsize執行緒的個數,threadfactory建立執行緒的工廠

5、newsinglethreadscheduledexecutor單執行緒定時執行緒池

作用: 建立乙個單執行緒執行程式,它可安排在給定延遲後執行命令或者定期地執行。

特徵:(1)執行緒池中最多執行1個執行緒,之後提交的執行緒活動將會排在佇列中以此執行

(2)可定時或者延遲執行執行緒活動

建立方式:

(1)executors.newsinglethreadscheduledexecutor() ;

(2)executors.newsinglethreadscheduledexecutor(threadfactory threadfactory) ;//threadfactory建立執行緒的工廠

執行緒狀態參考:

五種執行緒池 -參考

執行緒池 關於執行緒池的五種狀態

在threadpoolexecutor類中定義了執行緒的五種狀態表示,通過atomicinteger 的高三位來表示執行緒的狀態 private static final int count bits integer.size 3 private static final int running 1...

五種執行緒池的介紹

1 newcachedthreadpool 作用 建立乙個可根據需要建立新執行緒的執行緒池,但是在以前構造的執行緒可用時將重用它們,並在需要時使用提供的 threadfactory 建立新執行緒。特徵 建立方式 executors.newcachedthreadpool 2 newfixedthre...

執行緒池 執行緒池的4種拒絕策略

結合上面的圖,我們思考乙個問題,當我們建立乙個執行緒池的時候,他會有最大的執行緒數,和執行緒任務快取數。如果系統的執行緒任務突然暴增,這個時候,執行緒池的執行緒達到最大值,執行緒佇列中的快取數也達到了最大值,這個時候,沒有擠進執行緒池的該怎麼辦。在使用執行緒池的時候,可能會遇到兩種情況,導致執行緒會...