執行緒池基礎,工作原理與引數設定

2021-09-24 11:54:49 字數 2887 閱讀 5072

主要特點為:執行緒復用,控制最大併發數,管理執行緒。

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 最大核心執行緒數 本文不會對執行緒池各個引數介紹,假定你已經了解了執行緒池各個引數的含義。當前實際應用中,經常會遇到單個請求處理時...