執行緒池的拒絕策略
1、是什麼?
- 等待佇列已經排滿了,再也塞不下新任務了
- 同時,執行緒池中的max執行緒也達到了,無法繼續為新任務服務。
- 這個是時候我們就需要拒絕策略機制合理的處理這個問題。
2、JDK內建的拒絕策略
- AbortPolicy(預設):直接丟擲RejectedExecutionException異常阻止系統正常執行
- CallerRunsPolicy:「呼叫者執行」一種調節機制,該策略既不會拋棄任務,也不會丟擲異常,而是將某些任務回退到呼叫者,從而降低新任務的流量。
- DiscardOldestPolicy:拋棄佇列中等待最久的任務,然後把當前任務加人佇列中嘗試再次提交當前任務。
- DiscardPolicy:該策略默默地丟棄無法處理的任務,不予任何處理也不丟擲異常。如果允許任務丟失,這是最好的一種策略。
均實現了RejectedExecutionHandle介面