最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot 整合線程池的示例詳解

 更新時間:2024年08月14日 16:10:48   作者:救苦救難韓天尊  
線程池是一種利用池化技術(shù)思想來實現(xiàn)的線程管理技術(shù),主要是為了復(fù)用線程、便利地管理線程和任務(wù)、并將線程的創(chuàng)建和任務(wù)的執(zhí)行解耦開來,這篇文章主要介紹了SpringBoot 整合線程池的示例詳解,需要的朋友可以參考下

線程池簡介

什么是線程池

線程池是一種利用池化技術(shù)思想來實現(xiàn)的線程管理技術(shù),主要是為了復(fù)用線程、便利地管理線程和任務(wù)、并將線程的創(chuàng)建和任務(wù)的執(zhí)行解耦開來。我們可以創(chuàng)建線程池來復(fù)用已經(jīng)創(chuàng)建的線程來降低頻繁創(chuàng)建和銷毀線程所帶來的資源消耗。在JAVA中主要是使用ThreadPoolExecutor類來創(chuàng)建線程池,并且JDK中也提供了Executors工廠類來創(chuàng)建線程池(不推薦使用)。

線程池的優(yōu)點

  • 降低資源消耗,復(fù)用已創(chuàng)建的線程來降低創(chuàng)建和銷毀線程的消耗。
  • 提高響應(yīng)速度,任務(wù)到達時,可以不需要等待線程的創(chuàng)建立即執(zhí)行。
  • 提高線程的可管理性,使用線程池能夠統(tǒng)一的分配、調(diào)優(yōu)和監(jiān)控。

1.啟動類加 @EnableAsync 注解

@SpringBootApplication
@EnableAsync
public class FacadeH5Application {
    public static void main(String[] args) {
        SpringApplication.run(FacadeH5Application.class, args);
    }
}

2.在方法上加 @Async 注解

@Async
public void m1() {
    //do something
}

注意:導(dǎo)致 @Async 注解失效的幾個原因

  • 兩個方法都在同一個類里面,一個方法調(diào)用另一個異步方法,不生效。但是如果在本類中注入自己的實例,再通過自己的實例調(diào)用異步方法就可行。
  • @Async 方法所在的類沒有交給 spring 代理(沒加諸如@Component注解),不生效。
  • 注解的方法不是是public方法,不生效。

3.創(chuàng)建線程池配置類

默認的線程池配置如下

# 核心線程數(shù)
spring.task.execution.pool.core-size=8  
# 最大線程數(shù)
spring.task.execution.pool.max-size=16
# 空閑線程存活時間
spring.task.execution.pool.keep-alive=60s
# 是否允許核心線程超時
spring.task.execution.pool.allow-core-thread-timeout=true
# 線程隊列數(shù)量
spring.task.execution.pool.queue-capacity=100
# 線程關(guān)閉等待
spring.task.execution.shutdown.await-termination=false
spring.task.execution.shutdown.await-termination-period=
# 線程名稱前綴
spring.task.execution.thread-name-prefix=task-

創(chuàng)建線程池配置類

@Configuration
public class ThreadPoolConfig {
    @Bean
    public TaskExecutor taskExecutor(){
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        //設(shè)置核心線程數(shù)
        executor.setCorePoolSize(10);
        //設(shè)置最大線程數(shù)
        executor.setMaxPoolSize(20);
        //設(shè)置隊列容量
        executor.setQueueCapacity(20);
        //設(shè)置線程活躍時間
        executor.setKeepAliveSeconds(30);
        //設(shè)置線程名稱前綴
        executor.setThreadNamePrefix("sendSms-");
        //設(shè)置拒絕策略
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        //等待所有任務(wù)結(jié)束后再關(guān)閉線程池
        executor.setWaitForTasksToCompleteOnShutdown(true);
        //設(shè)置線程池中任務(wù)的等待時間
        executor.setAwaitTerminationSeconds(60);
        return executor;
    }
}

配置多個線程池

有時候,一個項目中如果配置了多個線程池,那需要在 @Bean后面加上線程池的名稱

@Configuration
public class ThreadPoolConfig {
    @Bean("ThreadPool1")
    public TaskExecutor taskExecutor(){
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
		......
        return executor;
    }
    @Bean("ThreadPool2")
    public TaskExecutor taskExecutor(){
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
		......
        return executor;
    }
}

在使用 @Async注解時就需要指明具體使用的線程池,如下格式

@Async("ThreadPool1")
public void m1() {
    //do something
}

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

相關(guān)文章

  • Java?離線中文語音文字識別功能的實現(xiàn)代碼

    Java?離線中文語音文字識別功能的實現(xiàn)代碼

    這篇文章主要介紹了Java?離線中文語音文字識別,本次使用springboot?+maven實現(xiàn),官方demo為springboot+gradle,結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • springboot集成Deepseek4j的項目實踐

    springboot集成Deepseek4j的項目實踐

    本文主要介紹了springboot集成Deepseek4j的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Spring MVC接受表單自動封裝特性實例解析

    Spring MVC接受表單自動封裝特性實例解析

    這篇文章主要介紹了Spring MVC接受表單自動封裝特性實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Java括號匹配舉例詳解

    Java括號匹配舉例詳解

    看到大家對括號匹配問題很感興趣,下面這篇文章主要給大家介紹了關(guān)于Java括號匹配的相關(guān)資料,括號匹配是一種常見的編程問題,涉及到在給定的字符串中判斷括號是否匹配,需要的朋友可以參考下
    2023-10-10
  • SpringBoot引入模板引擎實現(xiàn)視圖解析

    SpringBoot引入模板引擎實現(xiàn)視圖解析

    這篇文章主要介紹了SpringBoot引入模板引擎實現(xiàn)視圖解析方法流程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • Java中4種經(jīng)典限流算法講解

    Java中4種經(jīng)典限流算法講解

    本文主要介紹了Java中4種經(jīng)典限流算法講解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java中的Monad設(shè)計模式及其實現(xiàn)過程

    Java中的Monad設(shè)計模式及其實現(xiàn)過程

    本文介紹了Java中的Monad設(shè)計模式及其在函數(shù)式編程中的應(yīng)用,雖然Java不是函數(shù)式編程語言,但可以通過接口和泛型模擬Monad的行為,實現(xiàn)鏈式調(diào)用和上下文管理,通過一個示例展示了如何使用OptionalMonad進行鏈式調(diào)用,并解析了Monad接口和OptionalMonad的實現(xiàn)細節(jié)
    2025-03-03
  • 詳解SpringBoot如何統(tǒng)一后端返回格式

    詳解SpringBoot如何統(tǒng)一后端返回格式

    今天我們來聊一聊在基于SpringBoot前后端分離開發(fā)模式下,如何友好的返回統(tǒng)一的標準格式以及如何優(yōu)雅的處理全局異常,感興趣的可以了解一下
    2021-07-07
  • SpringBoot+MybatisPlus+jdbc連接池配置多數(shù)據(jù)源的實現(xiàn)

    SpringBoot+MybatisPlus+jdbc連接池配置多數(shù)據(jù)源的實現(xiàn)

    本文主要介紹了SpringBoot+MybatisPlus+jdbc連接池配置多數(shù)據(jù)源的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • Java設(shè)計模式之java外觀模式詳解

    Java設(shè)計模式之java外觀模式詳解

    這篇文章主要介紹了Java設(shè)計模式之外觀模式(Facade模式)介紹,外觀模式(Facade)的定義:為子系統(tǒng)中的一組接口提供一個一致的界面,需要的朋友可以參考下
    2021-09-09

最新評論

镇平县| 九龙县| 嘉鱼县| 广东省| 佛冈县| 海口市| 德化县| 中阳县| 靖州| 抚顺市| 武川县| 黄平县| 莲花县| 沁水县| 宜良县| 洪江市| 永安市| 祥云县| 黄平县| 乌鲁木齐市| 天长市| 中超| 宿迁市| 大港区| 遂平县| 成安县| 普兰县| 辉县市| 阿合奇县| 房产| 双牌县| 秦安县| 南召县| 梓潼县| 高阳县| 大田县| 会同县| 宝鸡市| 马公市| 甘南县| 巩义市|