執行緒池底層核心介面簡析

2021-10-05 05:13:18 字數 817 閱讀 5039

threadpoolexcecutor構造方法引數

1.繼承關係

executor

executorservice

abstractexecutorservice

threadpoolexecutor

public threadpoolexecutor(int corepoolsize,int maxnumpoolsize, long reepalivetime,timeunit unit, blockingqueueworkqueue, threadfactory threadfactory, rejectexecutionhandler handler){

corepoolsize:執行緒池核心執行緒數

maxnumpoolsize:執行緒池最大數

reepalivetime:空閒執行緒存活時間

unit:時間單位

workqueue:執行緒池所使用的緩衝佇列

threadfactory:執行緒池建立使用的工廠

handler:執行緒池對拒絕任務的處理策略

特性一:當池中正在執行的執行緒數(包括空閒執行緒),小於corepoolsize時,從執行緒池中取執行緒執行任務。

特性二:當池中正在執行的執行緒數大於等於corepoolsize時,新插入的任務進入workqueue排隊。

特性三:當佇列裡的任務達到上限,並且池中正在執行的執行緒數小於maxnumpoolsize,對於新加入的任務,新建執行緒。

特性四:當佇列裡的任務數達到上限,並且池中正在執行的執行緒數等於maxnumpoolsize,對於新加入的任務,執行拒絕策略(預設策略跑出rejectdexcutionexception)

執行緒池底層原理《二》

當執行緒數小於核心執行緒數時,建立執行緒 當執行緒數大於等於核心執行緒數,且任務佇列未滿時,將任務放入任務佇列 當執行緒數大於等於核心執行緒數,且任務佇列已滿時,1 若執行緒數小於最大執行緒數,建立執行緒 2 若執行緒數等於最大執行緒數,丟擲異常,拒絕任務 abortpolicy 丟棄任務,拋執行時...

執行緒池底層佇列詳解

如果執行的執行緒數 corepoolsize,則 executor始終首選新增新的執行緒,而不進行排隊。即任務根本不會存入queue中,而是直接執行 如果執行的執行緒數 corepoolsize,則 executor 始終首選將請求加入佇列,而不新增新的執行緒。如果無法將請求加入佇列,則建立新的執行...

執行緒池底層工作原理和流程

當提交任務執行excute時 1.若正在執行的執行緒數量小於corepoolsize,則執行緒池馬上建立執行緒執行任務 2.如果正在執行的執行緒數量大於等於corepoolsize,則多餘的任務加入阻塞佇列等待 3.如果佇列滿了且正在執行的執行緒數量小於maximumpoolsize,那麼還要建立非...