執行緒池拒絕策略

2021-10-06 04:14:29 字數 1865 閱讀 7231

手寫執行緒池拒絕策略

執行緒池的引數:

預設策略:

//預設 拒絕策略 --  丟擲異常 程式崩潰

第二種策略:

//執行緒從哪來 回哪去

//這個 用力 將

executorservice exec =

newthreadpoolexecutor(1

,2,30

, timeunit.microseconds,

newarrayblockingqueue

<

>(2

),executors.

defaultthreadfactory()

,new

threadpoolexecutor.callerrunspolicy()

);try}

finally

被拒絕執行緒轉為由發起執行緒去執行。

效果圖:

第三種策略:

移除等待最久的執行緒

//移除等待最久的執行緒

executorservice exec =

newthreadpoolexecutor(1

,2,30

, timeunit.microseconds,

newarrayblockingqueue

<

>(2

),executors.

defaultthreadfactory()

,new

threadpoolexecutor.discardoldestpolicy()

);//try

}finally

效果圖:

第四種策略:

什麼 也不要做

執行緒池拒絕策略

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

執行緒池的拒絕策略

今天我自己整理了一下threadpoolexector的最後乙個引數 拒絕策略 當新到的任務數量已經超過了系統實際能夠承載的能力時,就會觸發拒絕策略,這是系統超負荷執行的補救措施具體以下3個方面 執行緒池有乙個任務佇列,用於快取所有待處理的任務,一旦開始處理這些任務,這些任務將從任務佇列中刪除,在任...

執行緒池拒絕策略bug

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