執行緒池的拒絕策略

2021-08-14 05:28:19 字數 443 閱讀 1365

今天我自己整理了一下threadpoolexector的最後乙個引數--拒絕策略

當新到的任務數量已經超過了系統實際能夠承載的能力時,就會觸發拒絕策略,這是系統超負荷執行的補救措施具體以下3個方面

執行緒池有乙個任務佇列,用於快取所有待處理的任務,一旦開始處理這些任務,這些任務將從任務佇列中刪除,在任務佇列長度有限的情況下,就會出現新任務拒絕處理問題,需要一種策略來處理這種應該加入佇列卻因佇列已滿無法加入的情況

具體措施

jdk提供了四種拒絕策略

abortpolicy策略:直接丟擲異常

discardoldestpolicy策略:丟棄佇列中即將執行的任務,並執行當前任務

discardpolicy策略:不處理直接丟棄

02自定義擴充套件

以上四種策略均實現了rejectexecutionhandler介面,所以我們自己可以拓展實現該介面

執行緒池拒絕策略

手寫執行緒池拒絕策略 執行緒池的引數 預設策略 預設 拒絕策略 丟擲異常 程式崩潰 第二種策略 執行緒從哪來 回哪去 這個 用力 將 executorservice exec newthreadpoolexecutor 1 2,30 timeunit.microseconds,newarrayblo...

執行緒池拒絕策略

public void rejectedexecution runnable r,threadpoolexecutor e 丟擲異常表明哪個任務在哪個執行緒池中執行失敗了 public void rejectedexecution runnable r,threadpoolexecutor e 如果...

執行緒池拒絕策略bug

首先看一下任務提交的流程 執行緒池的最大執行緒數為2,任務佇列大小為1,理論上最多同時可提交3個任務,但實際卻觸發了拒絕策略。public static void main string args throws interruptedexception catch interruptedexcept...