執行緒池的拒絕策略

2020-09-22 15:01:53

執行緒池的拒絕策略

1、是什麼?

  • 等待佇列已經排滿了,再也塞不下新任務了
  • 同時,執行緒池中的max執行緒也達到了,無法繼續為新任務服務。
  • 這個是時候我們就需要拒絕策略機制合理的處理這個問題。

2、JDK內建的拒絕策略

  • AbortPolicy(預設):直接丟擲RejectedExecutionException異常阻止系統正常執行
  • CallerRunsPolicy:「呼叫者執行」一種調節機制,該策略既不會拋棄任務,也不會丟擲異常,而是將某些任務回退到呼叫者,從而降低新任務的流量。
  • DiscardOldestPolicy:拋棄佇列中等待最久的任務,然後把當前任務加人佇列中嘗試再次提交當前任務。
  • DiscardPolicy:該策略默默地丟棄無法處理的任務,不予任何處理也不丟擲異常。如果允許任務丟失,這是最好的一種策略。

均實現了RejectedExecutionHandle介面