執行緒池: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 執行...