多線程:多線程飽和拒絕策略

前言:當線程的數量超過最大承受數量的適合,會發起拒絕策略用於自我保護線程

1、AbortPolicy(默認):直接拋出RejectedExecutionException異常隊列

2、CallerRunsPolicy:調用者運行使用的一種機制,不會將任務拋棄,也不會拋出異常,而是將任務回退給調用者io

3、DiscardOldestPolicy:拋棄隊列中等待最久的任務,而後將當前任務加入到隊列中,而後試着提交當前任務class

4、DiscardPolicy:直接丟棄任務,不作任何處理也不會拋棄異常cpu

 

補充異常

1、既然線程數量可能會超過最大承受數量,那麼多少線程數是合理的呢?di

一、CPU密集型:最大線程數應爲cpu核心數+1co

二、I/O密集型阻塞

1)、cpu核心數 * 2

2)、使用公式:cpu核數 /(1 - 阻塞係數),阻塞係數通常在0.8~0.9之間,而書中提到的範圍是0~1