執行緒池有哪些引數?

2021-10-08 12:37:18 字數 1424 閱讀 9345

我們首先建立乙個執行緒池

public

class

threadpoolparameters

}

當然,上面的引數是隨便填的,進入 executors.newfixedthreadpool裡面,檢視建立 fixedthreadpool執行緒池的原始碼,如下就是它原始碼的一部分

public

static executorservice newfixedthreadpool

(int nthreads)

我們再進一步進入 threadpoolexecutor物件裡面,下面是一部分原始碼

public

threadpoolexecutor

(int corepoolsize,

int maximumpoolsize,

long keepalivetime,

timeunit unit,

blockingqueue

workqueue)

我們可以從上面這個執行緒池中的 this,找到引數最多的建立執行緒池的**

public

threadpoolexecutor

(int corepoolsize,

int maximumpoolsize,

long keepalivetime,

timeunit unit,

blockingqueue

workqueue,

threadfactory threadfactory,

rejectedexecutionhandler handler)

上面只擷取了引數部分**,下面的實現部分沒擷取,以下是引數部分

核心執行緒數,這是執行緒空閒時可以儲存的執行緒數,執行緒池剛建立時,可以指定 corepoolsize的個數,而後執行緒池可以建立多個執行緒直到到達 corepoolsize的個數,如果沒有特殊設定,corepoolsize執行緒一建立,就不會主動銷毀,即使是在空閒的時間

空閒執行緒存活時間,當執行緒池建立的執行緒數大於 corepoolsize但小於等於maximumpoolsize的時候,只要執行緒處於空閒的時候,執行緒池會根據 keepalivetime設定的時間去銷毀多出 corepoolsize個數的執行緒

執行緒池設定 keepalivetime的時間單位,上面的 fixedthreadpool預設的時間單位是 timeunit.milliseconds,也就是毫秒級別

阻塞佇列,存放任務的工作佇列,用來存放 corepoolsize處理不過來的任務

執行緒工廠,用來生產線程以便去處理任務,可以自定義適合業務的執行緒工廠

任務拒絕策略,用來處理當 workqueue已經滿且 maximumpoolsize達到最大上限的時候,用來處理新提交的任務

執行緒池的種類有哪些?

目錄 一 可快取執行緒池 newcachedthreadpool 二 指定工作執行緒的執行緒池 newfixedthreadpool 三 定時的執行緒池newscheduledthreadpool 四 單執行緒執行緒池 newsinglethreadexecutor 建立乙個可根據需要建立新執行緒的...

常用的執行緒池有哪些?

newfixedthreadpool 建立固定大小的執行緒池,每次提交乙個任務就建立乙個執行緒,直到執行緒達到執行緒池的最大大小 newcachedthreadpool 建立乙個可快取的執行緒池,此執行緒池不會對執行緒池大小做限制,執行緒池大小完全依賴於 作業系統 或者說 jvm 能夠建立的最大執行...

執行緒池都有哪些核心配置引數?

表示常駐核心執行緒數量。表示執行緒池中能同時執行的最大執行緒數量。這個值必須大於等於corepoolsize,如果這兩個值相等,那就是固定大小的執行緒池 表示執行緒池中除常駐核心執行緒之外的其他執行緒的空閒時間,如果超過這個時間就會銷毀。快取佇列,當請求的執行緒數大於corepoolsize的時候,...