JDK 執行緒池

2022-03-12 05:41:13 字數 2141 閱讀 5985

在jdk的4種執行緒池之前, 先介紹一下執行緒池的幾個引數

固定執行緒池數量, 核心執行緒數 = 最大執行緒數

任務佇列: linkedblockingqueue(integer.max_value) 無界佇列

適用於同時處理固定任務數的場景.

public static executorservice newfixedthreadpool(int nthreads)

核心執行緒數為0, 最大為 integer.max_value,也就是當任務足夠多的時候, 可以無限增加執行緒.

任務佇列: synchronousqueue 預設傳入引數fair=false, 即處理任務非公平.

適用於處理小任務

public static executorservice newcachedthreadpool()
synchronousqueue

public synchronousqueue(boolean fair)

單個執行緒的執行緒池

任務佇列: linkedblockingqueue 同樣是無界佇列

適用於需要將任務按順序執行的時候

public static executorservice newsinglethreadexecutor()

固定核心執行緒數, 執行緒數量不會再增長, maximumpoolsize 這個引數對定時執行緒池沒有作用.

任務佇列: delayedworkqueue 無界佇列, 這是 scheduledthreadpoolexecutor 的乙個內部類

適用於有延時 或者定時需求的場景

public scheduledthreadpoolexecutor(int corepoolsize)

拒絕新任務,並且丟擲異常, 預設的拒絕策略

public static class abortpolicy implements rejectedexecutionhandler 

public void rejectedexecution(runnable r, threadpoolexecutor e)

}

當拒絕任務的時候,由呼叫執行緒處理該任務.

public static class callerrunspolicy implements rejectedexecutionhandler 

public void rejectedexecution(runnable r, threadpoolexecutor e)

}}

拒絕新任務,靜悄悄的將新任務丟棄,而不通知(太坑了吧), 具體看它的**也是什麼事情都沒做, 還真的就直接丟棄任務了.

public static class discardpolicy implements rejectedexecutionhandler 

public void rejectedexecution(runnable r, threadpoolexecutor e)

}

當任務滿時, 拋棄舊的未處理的任務, 然後重新執行 execute 方法(此過程會重複), 除非 執行緒池 停止執行, 這種情況任務將被丟棄.具體看**

public static class discardoldestpolicy implements rejectedexecutionhandler 

public void rejectedexecution(runnable r, threadpoolexecutor e)

}}

這次的內容到這裡就結束了,最後的最後,非常感謝你們能看到這裡!!你們的閱讀都是對作者的一次肯定!!!

覺得文章有幫助的看官順手點個贊再走唄(終於暴露了我就是來騙贊的(◒。◒)),你們的每個讚對作者來說都非常重要(異常真實),都是對作者寫作的一次肯定(double)!!!

jdk執行緒池詳解

public threadpoolexecutor int corepoolsize,核心執行緒數 intmaximumpoolsize,最大執行緒數 long keepalivetime,空閒時間 timeunit unit,時間單位 blockingqueueworkqueue,等待佇列 thr...

jdk執行緒池 Executor體系

提供了乙個執行緒佇列,佇列中儲存著所有等待狀態的執行緒。避免了建立與銷毀額外開銷,提高了響應的速度。executor 負責執行緒的使用與排程的根介面 只有乙個execute runnable 方法 executorservice 子介面 executorservice 繼承 executor,並宣告...

jdk執行緒池學習筆記

1.執行緒池的執行緒儲存在hashset中,處理流程 core pool blocking queue max pool reject policy 2.核心執行緒池一般不會 除非設定了allowcorethreadtimeout,執行緒空閒時處於駐留狀態 locksupport.park 3.ke...