1 回答
已采納

sunbohan00
TA貢獻44條經驗 獲得超73個贊
首先是corePoolSize,在創建了線程池后,在他的默認情況下,線程池中其實是沒有任何線程的,而是等待有任務到來才創建線程去執行任務,在創建了線程池后,線程池中的線程數為0,當有任務來之后,就會創建一個線程去執行任務,當線程池中的線程數目達到corePoolSize后,就會把到達的任務放到緩存隊列當中。核心線程在allowCoreThreadTimeout被設置為true時會超時退出,默認情況下不會退出。
maxPoolSize
當線程數大于或等于核心線程,且任務隊列已滿時,線程池會創建新的線程,直到線程數量達到maxPoolSize。如果線程數已等于maxPoolSize,且任務隊列已滿,則已超出線程池的處理能力,線程池會拒絕處理任務而拋出異常。
keepAliveTime
當線程空閑時間達到keepAliveTime,該線程會退出,直到線程數量等于corePoolSize。如果allowCoreThreadTimeout設置為true,則所有線程均會退出直到線程數量為0。
allowCoreThreadTimeout
是否允許核心線程空閑退出,默認值為false。
queueCapacity
任務隊列容量。從maxPoolSize的描述上可以看出,任務隊列的容量會影響到線程的變化,因此任務隊列的長度也需要恰當的設置。
希望采納
添加回答
舉報
0/150
提交
取消