執行緒池學習總結

2021-08-25 08:36:34 字數 776 閱讀 7292

核心執行緒數:5

工作佇列:100

最大執行緒數:10

拒絕策略

講解1:執行緒全為空

1.執行緒首先占用核心執行緒中的空餘執行緒;

2.當核心執行緒數5個全部被占用,此時又來乙個執行緒需要處理,則此執行緒被放入工作佇列中

3.當工作佇列中的100個空餘執行緒位置均被占用時,此時又來乙個執行緒需要處理,則將工作佇列中的執行緒按照fifo的原則拿出乙個新執行緒處理

4.迴圈執行步驟3,直至正在執行的執行緒數等於最大執行緒數10個,此時又來乙個執行緒需要處理,則採取拒絕策略

講解2:執行緒全為空

1、當提交乙個新任務到執行緒池時首先執行緒池判斷基本執行緒池(corepoolsize)是否已滿?沒滿,建立乙個工作執行緒來執行任務。滿了,則進入下個流程;其次執行緒池判斷工作佇列(workqueue)是否已滿?沒滿,則將新提交的任務儲存在工作佇列裡。滿了,則進入下個流程;最後執行緒池判斷整個執行緒池(maximumpoolsize)是否已滿?沒滿,則建立乙個新的工作執行緒來執行任務,滿了,則交給飽和策略來處理這個任務;如果執行緒池中的執行緒數量大於 corepoolsize 時,如果某執行緒空閒時間超過keepalivetime,執行緒將被終止,直至執行緒池中的執行緒數目不大於corepoolsize;如果允許為核心池中的執行緒設定存活時間,那麼核心池中的執行緒空閒時間超過 keepalivetime,執行緒也會被終止。

2、飽和策略:

abort策略:預設策略,新任務提交時直接丟擲未檢查的異常rejectedexecutionexception,該異常可由呼叫者捕獲。

discard策略:新提交的任務被拋棄。

執行緒學習總結(執行緒池)

1 使用jdk提供的執行緒池步驟 1 建立執行緒目標物件 runnable介面實現類 2 使用executors建立執行緒池物件,返回executorservice物件 3 執行緒池execute方法執行執行緒物件 4 執行緒池shutdown方法結束執行緒池中的執行緒 2 執行緒池型別 1 new...

執行緒池總結

執行緒池基本思想 是一種物件池的思想,開闢一塊記憶體空間,裡面存放了眾多 未死亡 的執行緒,池中線程執行排程 由池管理器來處理。當有執行緒任務時,從池中取一根,執行完後執行緒物件歸池,這樣可以避免反覆建立執行緒物件鎖帶來的效能開銷,節約系統資源。1 動態建立執行緒池 2 建立固定大小的執行緒池 3 ...

執行緒池總結

參考部落格 threadpoolexecutor int corepoolsize,int maximumpoolsize,long keepalivetime,timeunit unit,blockingqueueworkqueue,rejectedexecutionhandler handler...