欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot使用線程池(ThreadPoolTaskExecutor)示例

 更新時間:2022年01月23日 17:25:36   作者:返回主頁云深小麥  
大家好,本篇文章主要講的是springboot使用線程池(ThreadPoolTaskExecutor)示例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

代碼倉庫:gitee

線程池創(chuàng)建

@Configuration
@EnableAsync
public class TaskPoolConfig {

    @Bean("syncExecutorPool")
    public Executor taskExecutor() {
        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
        // 核心池大小
        taskExecutor.setCorePoolSize(5);
        // 最大線程數(shù)
        taskExecutor.setMaxPoolSize(10);
        // 隊列程度
        taskExecutor.setQueueCapacity(100);
        // 線程空閑時間
        taskExecutor.setKeepAliveSeconds(60);
        // 線程前綴名稱
        taskExecutor.setThreadNamePrefix("syncExecutor--");
        // 該方法用來設置 線程池關閉 的時候 等待 所有任務都完成后,再繼續(xù) 銷毀 其他的 Bean,
        // 這樣這些 異步任務 的 銷毀 就會先于 數(shù)據庫連接池對象 的銷毀。
        taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
        // 任務的等待時間 如果超過這個時間還沒有銷毀就 強制銷毀,以確保應用最后能夠被關閉,而不是阻塞住。
        taskExecutor.setAwaitTerminationSeconds(60);
        // 線程不夠用時由調用的線程處理該任務
        taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        return taskExecutor;
    }
}

線程池參數(shù)

核心線程數(shù)量:CorePoolSize
看業(yè)務場景設置(我通常設置為CPU核心*1)

最大線程數(shù)量:MaxPoolSize
當核心線程數(shù)量都在使用狀態(tài)時,會調用最大線程數(shù)量里的線程,使用的總線程不會超過最大線程數(shù)量,其余則等待(我通常設置為CPU核心*2)

隊列程度:QueueCapacity
線程隊列的大小

線程空閑時間:KeepAliveSeconds

線程前綴名稱:ThreadNamePrefix

停機策略:WaitForTasksToCompleteOnShutdown
該方法用來設置 線程池關閉 的時候 等待 所有任務都完成后,再繼續(xù) 銷毀 其他的 Bean,這樣這些 異步任務 的 銷毀 就會先于 數(shù)據庫連接池對象 的銷毀。

任務的等待時間:AwaitTerminationSeconds
任務的等待時間 如果超過這個時間還沒有銷毀就 強制銷毀,以確保應用最后能夠被關閉,而不是阻塞住

拒接策略:RejectedExecutionHandler
線程不夠用時由調用的線程處理該任務

線程池測試1(核心線程數(shù)量)

結果:線程池的核心線程數(shù)量輪訓執(zhí)行

線程池測試2(當核心線程數(shù)量和最大線程數(shù)量不夠時)

隨機睡眠0-10000毫秒
new Random().nextInt(10000)

結果:

當5個核心線程數(shù)量不夠用時,使用最大線程數(shù)量里的線程
當最大線程數(shù)量不夠用時,使用主線程執(zhí)行該任務

// 線程不夠用時由調用的線程處理該任務
taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());

總結

到此這篇關于springboot使用線程池(ThreadPoolTaskExecutor)示例的文章就介紹到這了,更多相關springboot線程池內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中Random簡介_動力節(jié)點Java學院整理

    Java中Random簡介_動力節(jié)點Java學院整理

    本文詳細給大家介紹了Java中Random簡介相關知識,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-06-06
  • springBoot 打war包 程序包com.sun.istack.internal不存在的問題及解決方案

    springBoot 打war包 程序包com.sun.istack.internal不存在的問題及解決方案

    這篇文章主要介紹了springBoot 打war包 程序包com.sun.istack.internal不存在的問題及解決方案,親測試過可以,需要的朋友可以參考下
    2018-07-07
  • springBoot快速訪問工程目錄下的靜態(tài)資源

    springBoot快速訪問工程目錄下的靜態(tài)資源

    springboot工程,是沒有webapp文件夾的,靜態(tài)文件放在src/main/resources/static文件夾下即可,模板文件放在src/main/resources/templates下,本文給大家介紹springBoot快速訪問工程目錄下的靜態(tài)資源的相關知識,一起看看吧
    2021-06-06
  • Mybatis注解sql時出現(xiàn)的一個錯誤及解決

    Mybatis注解sql時出現(xiàn)的一個錯誤及解決

    這篇文章主要介紹了Mybatis注解sql時出現(xiàn)的一個錯誤及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java基礎之Bean的創(chuàng)建、定位和使用

    Java基礎之Bean的創(chuàng)建、定位和使用

    這篇文章主要介紹了Java基礎之Bean的創(chuàng)建、定位和使用,文中有非常詳細的圖文示例及代碼,對正在學習java基礎的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • SpringBoot繼承LogStash實現(xiàn)日志收集的方法示例

    SpringBoot繼承LogStash實現(xiàn)日志收集的方法示例

    這篇文章主要介紹了SpringBoot繼承LogStash實現(xiàn)日志收集的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • 詳解JDBC的概念及獲取數(shù)據庫連接的5種方式

    詳解JDBC的概念及獲取數(shù)據庫連接的5種方式

    Java?DataBase?Connectivity是將Java與SQL結合且獨立于特定的數(shù)據庫系統(tǒng)的應用程序編程接口,一種可用于執(zhí)行SQL語句的JavaAPI。本文主要介紹了JDBC的概念及獲取數(shù)據庫連接的5種方式,需要的可以參考一下
    2022-09-09
  • Spring aop+反射實現(xiàn)電話號加密

    Spring aop+反射實現(xiàn)電話號加密

    線上項目涉及大量查詢接口中,存在電話號明文展示不合規(guī)的問題。如果對每個接口返回結果中電話號相關字段修改相關代碼邏輯,則工作量較大花費時間多。因此設計電話號加密注解,減少工作量。
    2021-06-06
  • Java基礎知識精通二維數(shù)組的應用

    Java基礎知識精通二維數(shù)組的應用

    為了方便組織各種信息,計算機常將信息以表的形式進行組織,然后再以行和列的形式呈現(xiàn)出來。二維數(shù)組的結構決定了其能非常方便地表示計算機中的表,以第一個下標表示元素所在的行,第二個下標表示元素所在的列。下面簡單了解一下二維數(shù)組,包括數(shù)組的聲明和初始化
    2022-04-04
  • 理解JDK動態(tài)代理為什么必須要基于接口

    理解JDK動態(tài)代理為什么必須要基于接口

    這篇文章主要介紹了理解JDK動態(tài)代理為什么必須要基于接口,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評論