SpringBoot線程池配置心得。java
task: pool: corePoolSize: 4 maxPoolSize: 20 keepAliveSeconds: 300 #queueCapacity: 8
一、 queueCapacity 隊列長度,參考源碼能夠發現,當咱們限制隊列長度的時候,頗有可能會因爲任務的瘋狂提交致使後面的任務被所有拒絕處理。所以,若是單個任務耗費時間比較長,那麼推薦不要去限制queueCapacity的長度,而讓其保持默認值性能
private int corePoolSize = 1; private int maxPoolSize = 2147483647; private int keepAliveSeconds = 60; private int queueCapacity = 2147483647; //該默認值 private boolean allowCoreThreadTimeOut = false;
以上是相關配置的默認值。這樣,能夠一口氣加載咱們提交的任務的上下文信息。線程
二、maxPoolSize和corePoolSize:能夠理解爲閒時的線程池維護的核心線程數量corePoolSize,固然,設置一些其餘參數例如閒時時間參數時另算。再有maxPoolSize是噹噹前線程超過核心線程的時候,還能夠繼續建立的線程數量,因爲任務和對應線程作了一一映射,也能夠理解爲系統當前處理的任務的最大數量,此時須要注意的是,不要設置的過大,根據電腦的性能以及任務的消耗進行對應設置,設置的太小那麼不能最大程度利用機器性能,設置的過大則會致使系統卡死或者崩潰。code
三、keepAliveSeconds: 程池維護線程所容許的空閒時間,同理,參考源碼,其值默認爲60s。隊列