執行緒池 3大方法 7大引數 4種拒絕策略

2021-10-10 05:36:21 字數 2102 閱讀 5540

執行緒池:3大方法、7大引數、4種拒絕策略

池化技術

程式的執行,本質:占用系統的資源 !優化資源的使用 !=>池化技術。

執行緒池、連線池、記憶體池、物件池 …//建立、銷毀。十分浪費資源

池化技術:事先準備好一些資源,有人要用,就來我這裡拿,用完還給我

執行緒池的好處

1、降低資源的消耗

2、提高響應的速度

3、方便管理

執行緒復用、可以控制最大併發數、管理執行緒

先看一下阿里巴巴開發手冊規範:

/**

* 執行緒池的 3大方法

* 不用 new thread(()->{}).start();這個老方法建立執行緒了

* 現在使用執行緒池來建立執行緒 --》 threadpool.execute(()->{});

*/public

class

demo1);

}}catch

(exception e)

finally

}}

executorservice threadpool=

newthreadpoolexecutor(2

,//核心執行緒數5,

//最大執行緒數3,

//等待時間

timeunit.seconds,

newlinkedblockingqueue

<

>(3

),//阻塞佇列

executors.

defaultthreadfactory()

,//執行緒工廠

newthreadpoolexecutor.abortpolicy()

//拒絕策略,超過最大承載,就丟擲異常);

//最大承載數 = 最大執行緒數 + 佇列 ==>max + blockingqueue

/**

* 執行緒的 4大拒絕策略

* 1、new threadpoolexecutor.abortpolicy() //拒絕策略,超過最大承載,就丟擲異常

* 2、new threadpoolexecutor.callerrunspolicy() //**來的**去,這個超出最大承載,誰(執行緒)拒絕,誰就去執行

* 3、new threadpoolexecutor.discardpolicy() //佇列滿了,丟掉任務,不會丟擲異常

* 4、new threadpoolexecutor.discardoldestpolicy() //佇列滿了,不會丟擲異常,嘗試和第乙個開始的執行緒去競爭,競爭失敗就丟掉

* */

1、cpu密集型。 電腦是幾核就是幾,可以保持cpu的效率最高。

2、io 密集型 > 判斷程式中十分耗 io的執行緒

/**

* 執行緒池的 3大方法

* 不用 new thread(()->{}).start();這個老方法建立執行緒了

* 現在使用執行緒池來建立執行緒 --》 threadpool.execute(()->{});

* ******************************====

* 執行緒的 4大拒絕策略

* 1、new threadpoolexecutor.abortpolicy() //拒絕策略,超過最大承載,就丟擲異常

* 2、new threadpoolexecutor.callerrunspolicy() //**來的**去,這個超出最大承載,誰(執行緒)拒絕,誰就去執行

* 3、new threadpoolexecutor.discardpolicy() //佇列滿了,丟掉任務,不會丟擲異常

* 4、new threadpoolexecutor.discardoldestpolicy() //佇列滿了,不會丟擲異常,嘗試和第乙個開始的執行緒去競爭,競爭失敗就丟掉

* */

public

class

demo1);

}}catch

(exception e)

finally}}

}

執行緒池的3大方法,7大引數,執行原理,拒絕策略

executors.newsinglethreadexecutor 單執行緒 executors.newfixedthreadpool 5 固定執行緒個數 executors.newcachedthreadpool 快取池,可擴充套件 public threadpoolexecutor int co...

使用執行緒池手動建立7大引數4大策略

為什麼需要自己定義執行緒池 newfixedthreadpool,newsinglethreadexecutor,newcachedthreadpool實際呼叫的都是threadpoolexecutor方法,而這方法由7大引數,我們要使用執行緒池的時候最好自己定義執行緒池通過定義threadpool...

執行緒池7大引數深入介紹

1.corepoolsize 執行緒池中的常駐核心執行緒數 1 在建立了執行緒池後,當有請求任務來之後,就會安排池中的執行緒去執行請求任務,近似理解為今日當值執行緒 2 當執行緒池中的執行緒數目達到corepoolsize後,就會把到達的任務放到快取佇列當中 2.maximumpoolsize 執行...