當一個新的任務,方法
execute(java.lang.Runnable)
被提交,只有不到corePoolSize
線程在運行,創建一個新的線程來處理請求,即使其他輔助線程是空閒的。的ThreadPoolExecutor - 核心和最大池大小
1)爲什麼有需要創建一個新的線程來處理請求,如果有空閒的線程?
如果有多於
corePoolSize
但小於maximumPoolSize
的線程正在運行,則只有在隊列已滿時纔會創建一個新線程。
2)我不明白corePoolSize
和maximumPoolSize
這裏的區別。其次,當線程小於maximumPoolSize
時,如何滿足一個隊列?如果線程等於或大於maximumPoolSize
,隊列只能是滿的。不是嗎?
1.如何執行()知道你的其他工作線程處於空閒狀態?當你完成它們後,你把它們還給了游泳池嗎? –
2.聽起來像ThreadPoolExecutor試圖維護一個比corePoolSize大但小於maximumPoolSize的可用線程池。 –
@RobertHarvey請發表這個答案。 – zEro