首先我們回顧一下線程有哪些狀態(tài)谆甜。
線程池的狀態(tài)有哪些呢媒鼓?
線程池的5種狀態(tài)是:Running,SHUTDOWN,STOP,TIDYING,TERMINATED
介紹一下線程池的拒絕策略:
前面已經(jīng)提到過線程池的四種拒絕策略分別為:
1 AbortPolicy 默認届吁,直接拋異常
2 DiscardPolicy ?正常執(zhí)行不處理
3 DiscardOldestPolicy 將當前任務加入隊尾,刪除之前隊尾線程
4 CallerRunsPolicy 終止正在執(zhí)行任務绿鸣,執(zhí)行當前需要加入的任務
分別給出幾個demo:
可以看到采用AbortPolicy ?直接拋了異常
可以看到當超過最大線程池數(shù)量的時候疚沐,調(diào)用CallerRunsPolicy的話會先把阻塞隊列里面尾部任務停止執(zhí)行當前任務
能看到當啟動DiscardOldestPolicy拒絕策略的時候,阻塞隊列滿的時候會直接去掉隊尾元素潮模,將當前任務插入隊尾
可以看到當執(zhí)行DiscardPolicy時只會執(zhí)行當前線程池和阻塞隊列里面的任務亮蛔,其他的都會被丟棄