有倆種可能:
1、如果使用的是無界隊列 LinkedBlockingQueue,也就是無界隊列的話,沒關系,繼續添加任務到阻塞隊列中等待執行,因為 LinkedBlockingQueue 可以近乎認為是一個無窮大的隊列,可以無限存放任務
2、如果使用的是有界隊列比如 ArrayBlockingQueue,任務首先會被添加到ArrayBlockingQueue中,ArrayBlockingQueue 滿了,會根據maximumPoolSize 的值增加線程數量,如果增加了線程數量還是處理不過來,ArrayBlockingQueue 繼續滿,那么則會使用拒絕策略RejectedExecutionHandler處理滿了的任務,默認是 AbortPolicy
補充:
線程池四大拒絕策略
、AbortPolicy
直接丟棄任務,拋出RejectedExecutionException異常,是默認策略
2、CallerRunsPolicy
只用調用者所在的線程處理任務
3、DiscardOldestPolicy
丟棄等待隊列中最舊的任務,并執行當前任務
4、DiscardPolicy
直接丟棄任務,但不拋出異常
————————————————
版權聲明:本文為CSDN博主「NewBee.Mu」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/NewBeeMu/article/details/122464378
————————————————
版權聲明:本文為CSDN博主「NewBee.Mu」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/NewBeeMu/article/details/122464330