首先看一下任務提交的流程:
執行緒池的最大執行緒數為2,任務佇列大小為1,理論上最多同時可提交3個任務,但實際卻觸發了拒絕策略。
public
static
void
main
(string[
] args)
throws interruptedexception
catch
(interruptedexception e)
system.out.
println
("worker"
+ finali +
"..."
+ thread.
currentthread()
.getname()
);})
);}}
最終原因解決:
總結:在把任務新增到任務佇列裡時,如果當前工作者執行緒數量為0就新增乙個工作者執行緒,這就是我這裡出現拒絕策略的原因。但這也不能算是bug,比如把任務加入到佇列裡,而此時又沒有工作者執行緒,那麼佇列裡面的任務就永遠也不會被執行!
執行緒池拒絕策略
手寫執行緒池拒絕策略 執行緒池的引數 預設策略 預設 拒絕策略 丟擲異常 程式崩潰 第二種策略 執行緒從哪來 回哪去 這個 用力 將 executorservice exec newthreadpoolexecutor 1 2,30 timeunit.microseconds,newarrayblo...
執行緒池拒絕策略
public void rejectedexecution runnable r,threadpoolexecutor e 丟擲異常表明哪個任務在哪個執行緒池中執行失敗了 public void rejectedexecution runnable r,threadpoolexecutor e 如果...
執行緒池的拒絕策略
今天我自己整理了一下threadpoolexector的最後乙個引數 拒絕策略 當新到的任務數量已經超過了系統實際能夠承載的能力時,就會觸發拒絕策略,這是系統超負荷執行的補救措施具體以下3個方面 執行緒池有乙個任務佇列,用於快取所有待處理的任務,一旦開始處理這些任務,這些任務將從任務佇列中刪除,在任...