1、當提交乙個新任務到執行緒池時首先執行緒池判斷核心執行緒池(corepoolsize)是否已滿?沒滿,建立乙個工作執行緒來執行任務。滿了,則判斷工作佇列(workqueue)是否已滿?沒滿,則將新提交的任務儲存在工作佇列裡。滿了,則判斷最大執行緒池(maximumpoolsize)是否已滿?沒滿,則建立乙個新的工作執行緒來執行任務,滿了,則交給飽和策略來處理這個任務;如果執行緒池中的執行緒數量大於 corepoolsize 時,如果某執行緒空閒時間超過keepalivetime,執行緒將被銷毀,直至執行緒池中的執行緒數目不大於corepoolsize;如果允許為核心池中的執行緒設定存活時間,那麼核心池中的執行緒空閒時間超過 keepalivetime,執行緒也會被銷毀。
2、飽和策略:
abort策略:預設策略,新任務提交時直接丟擲未檢查的異常rejectedexecutionexception,該異常可由呼叫者捕獲。
discard策略:新提交的任務被拋棄。
其他參考:
執行緒池工作原理
執行緒池狀態的切換 執行緒池關鍵類的uml圖 執行緒池就是把任務提交和任務執行解耦。首先看一下執行緒池的使用 public static void main string args throws interruptedexception 2,提交任務 es.shutdown 3,執行緒池關閉 跟進原...
執行緒池的工作原理
首先,當有乙個新的任務加入到執行緒池的任務佇列中時,執行緒池會先判斷當前執行緒數是否小於核心執行緒數,如果小於,這執行緒池會建立乙個新的執行緒 如果當前執行緒數大於或等於核心執行緒數,則會將這個新的任務加入到阻塞佇列中 這時如果任務的不斷加入導致阻塞佇列滿了,則執行緒池又會建立乙個新的臨時執行緒,處...
什麼是執行緒池?執行緒池的工作原理和使用執行緒池的好處
乙個執行緒池管理了一組工作執行緒,同時它還包括了乙個用於放置等待執行任務的任務佇列 阻塞佇列 預設情況下,在建立了執行緒池後,執行緒池中的執行緒數為0.當任務提交給執行緒池之後的處理策略如下 1 如果此時執行緒池中的數量小於corepoolsize 核心池的大小 即使執行緒池中的執行緒都處於空閒狀態...