亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

線程池任務執行器

線程池任務執行器

侃侃爾雅 2023-08-16 17:33:41
為什么 Spring 的 ThreadPoolTaskExecutor 不斷創建達到 Core Size 值的線程,無論現有線程是否空閑!    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();     executor.setCorePoolSize(300);     executor.setMaxPoolSize(500);     executor.setQueueCapacity(5000);     executor.setThreadNamePrefix("AsyncTask-");     executor.initialize();我一個接一個地發出請求,它不斷增加線程數量,直到達到 300。我的問題是,如果現有線程空閑,為什么它不使用空閑線程?一旦達到核心池大小,無論如何僅使用池中的線程。
查看完整描述

2 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

根據 java 文檔,Spring 在這里要做的事情較少

當在方法execute(Runnable)中提交新任務并且正在運行的線程少于corePoolSize時,即使其他工作線程處于空閑狀態,也會創建一個新線程來處理該請求。如果運行的線程數大于 corePoolSize 但小于 MaximumPoolSize,則僅當隊列已滿時才會創建新線程


查看完整回答
反對 回復 2023-08-16
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

核心線程池大小指定要保持準備狀態以處理任何潛在工作的線程數量,以避免創建新線程的開銷。指定 300 是要求線程池始終維護 300 個線程,您不應該期望它在滿足該數量之前重用。如果這個值太高,請考慮減少 corePoolSize,同時保持 maxPoolSize 不變,當池過載時,它會擴大。查看 ThreadPoolTaskExecutor 的setAllowCoreThreadTimeOut在不使用時將線程池縮小到 corePoolSize 以下。



查看完整回答
反對 回復 2023-08-16
  • 2 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號