問:執行緒池的啟動策略
執行緒池剛建立時,裡面沒有乙個執行緒。任務佇列是作為引數傳進來的。不過,就算佇列裡面有任務,執行緒池也不會馬上執行它們。
當呼叫execute()方法新增乙個任務時,執行緒池會做如下判斷
1)如果正在執行的執行緒數量小於corepoolsize,那麼馬上建立執行緒執行這個任務
2)當乙個執行緒完成任務時,它會從佇列中取下乙個任務來執行
3)當乙個執行緒無事可做,超過一定的時間(keepalivetime)時,執行緒池會判斷,如果當前執行的執行緒數大於corepoolsize,那麼這個執行緒就被停掉。所以執行緒池的所有任務完成後,它最終會收縮到corepoolsize的大小
相關知識可以看我的另一篇部落格執行緒池threadpoolexecutor
執行緒池的拒絕策略
今天我自己整理了一下threadpoolexector的最後乙個引數 拒絕策略 當新到的任務數量已經超過了系統實際能夠承載的能力時,就會觸發拒絕策略,這是系統超負荷執行的補救措施具體以下3個方面 執行緒池有乙個任務佇列,用於快取所有待處理的任務,一旦開始處理這些任務,這些任務將從任務佇列中刪除,在任...
執行緒池拒絕策略
手寫執行緒池拒絕策略 執行緒池的引數 預設策略 預設 拒絕策略 丟擲異常 程式崩潰 第二種策略 執行緒從哪來 回哪去 這個 用力 將 executorservice exec newthreadpoolexecutor 1 2,30 timeunit.microseconds,newarrayblo...
執行緒池拒絕策略
public void rejectedexecution runnable r,threadpoolexecutor e 丟擲異常表明哪個任務在哪個執行緒池中執行失敗了 public void rejectedexecution runnable r,threadpoolexecutor e 如果...