【SpringBoot】線程池

簡介

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;

以上是相關配置的默認值。這樣,能夠一口氣加載咱們提交的任務的上下文信息。線程

二、maxPoolSizecorePoolSize:能夠理解爲閒時的線程池維護的核心線程數量corePoolSize,固然,設置一些其餘參數例如閒時時間參數時另算。再有maxPoolSize是噹噹前線程超過核心線程的時候,還能夠繼續建立的線程數量,因爲任務和對應線程作了一一映射,也能夠理解爲系統當前處理的任務的最大數量,此時須要注意的是,不要設置的過大,根據電腦的性能以及任務的消耗進行對應設置,設置的太小那麼不能最大程度利用機器性能,設置的過大則會致使系統卡死或者崩潰。code

三、keepAliveSeconds: 程池維護線程所容許的空閒時間,同理,參考源碼,其值默認爲60s。隊列

相關文章
相關標籤/搜索