在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...