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

springboot使用線程池(ThreadPoolTaskExecutor)示例

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

代碼倉(cāng)庫(kù):gitee

線程池創(chuàng)建

@Configuration
@EnableAsync
public class TaskPoolConfig {

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

線程池參數(shù)

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

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

隊(duì)列程度:QueueCapacity
線程隊(duì)列的大小

線程空閑時(shí)間:KeepAliveSeconds

線程前綴名稱:ThreadNamePrefix

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

任務(wù)的等待時(shí)間:AwaitTerminationSeconds
任務(wù)的等待時(shí)間 如果超過(guò)這個(gè)時(shí)間還沒(méi)有銷毀就 強(qiáng)制銷毀,以確保應(yīng)用最后能夠被關(guān)閉,而不是阻塞住

拒接策略:RejectedExecutionHandler
線程不夠用時(shí)由調(diào)用的線程處理該任務(wù)

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

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

線程池測(cè)試2(當(dāng)核心線程數(shù)量和最大線程數(shù)量不夠時(shí))

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

結(jié)果:

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

// 線程不夠用時(shí)由調(diào)用的線程處理該任務(wù)
taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());

總結(jié)

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

相關(guān)文章

  • Java中Random簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java中Random簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    本文詳細(xì)給大家介紹了Java中Random簡(jiǎn)介相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-06-06
  • springBoot 打war包 程序包c(diǎn)om.sun.istack.internal不存在的問(wèn)題及解決方案

    springBoot 打war包 程序包c(diǎn)om.sun.istack.internal不存在的問(wèn)題及解決方案

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

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

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

    Mybatis注解sql時(shí)出現(xiàn)的一個(gè)錯(cuò)誤及解決

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

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

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

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

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

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

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

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

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

    Java基礎(chǔ)知識(shí)精通二維數(shù)組的應(yīng)用

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

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

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

最新評(píng)論