我們首先建立乙個執行緒池
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的時候,...