前言:當線程的數量超過最大承受數量的適合,會發起拒絕策略用於自我保護線程
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