主要特點為:執行緒復用,控制最大併發數,管理執行緒。
corepoolsize:執行緒池中的常駐核心執行緒數
maximumpoolsize:執行緒池能夠容納同時執行的最大執行緒數,此值必須大於1
keepalivetime:多餘的空閒執行緒存活時間。當前執行緒數量超過maximumpoolsize時,當空閒時間達到keepalivetime時,多餘空閒執行緒會被銷毀直到只剩下corepoolsize個執行緒為止。
unit:keepalivetime的單位
workqueue:任務佇列,被提交但尚未執行的任務
threadfactory:表示生成執行緒池中工作執行緒的執行緒工廠,用於建立執行緒,一般用預設的即可
handler:決絕策略,表示當佇列滿了並且執行緒大於執行緒池的最大執行緒數(maximumpoolsize)
handler:決絕策略
executorservice threadpool =
newthreadpoolexecutor(2
,5,1000
, timeunit.seconds,
newlinkedblockingqueue
<
>(3
), executors.
defaultthreadfactory()
,new
threadpoolexecutor.abortpolicy()
);trycatch
(interruptedexception e)
system.out.
println
(thread.
currentthread()
.getname()
+" --> 辦理業務");
+" --> 辦理業務");
}});
}}finally
回退給main執行緒呼叫
+" --> 辦理業務");
}});
}}finally
discardpolicy和discardoldestpolicy丟棄任務,只執行8個執行緒。
2.1 cpu密集型:
cpu密集型也叫計算密集型,指的是系統的硬碟、記憶體效能相對cpu要好很多,此時,系統運作大部分的狀況是cpu loading 100%,cpu要讀/寫i/o(硬碟/記憶體),i/o在很短的時間就可以完成,而cpu還有許多運算要處理,cpu loading很高。公式:cpu核數 + 12.2 io密集型
io密集型指的是系統的cpu效能相對硬碟、記憶體要好很多,此時,系統運作,大部分的狀況是cpu在等i/o (硬碟/記憶體) 的讀/寫操作,此時cpu loading並不高。公式1:cpu核數 * 2公式2:cpu核數 / (1 - 阻塞係數)阻塞係數 一般是0.8-0.9之間
執行緒池引數設定技巧
一 threadpoolexecutor的重要引數 queuecapacity 任務佇列容量 阻塞佇列 maxpoolsize 最大執行緒數 keepalivetime 執行緒空閒時間 allowcorethreadtimeout 允許核心執行緒超時 rejectedexecutionhandler...
執行緒池核心引數及引數設定
2.執行緒池引數設定 threadpoolexecutor是建立執行緒池的核心類,它定義了一些建構函式用來建立執行緒池,如下是它的其中乙個建構函式 public threadpoolexecutor int corepoolsize,int maximumpoolsize,long keepaliv...
java中線程池引數設定
本文主要介紹執行緒池是解決了哪些問題以及執行緒池中 的corepoolsize 核心執行緒數 queuecapacity 等待佇列的長度 maximumpoolsize 最大核心執行緒數 本文不會對執行緒池各個引數介紹,假定你已經了解了執行緒池各個引數的含義。當前實際應用中,經常會遇到單個請求處理時...