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

Spring?Boot多個(gè)定時(shí)任務(wù)阻塞問題的解決方法

 更新時(shí)間:2022年01月04日 16:38:25   作者:不才陳某  
在日常的項(xiàng)目開發(fā)中,往往會(huì)涉及到一些需要做到定時(shí)執(zhí)行的代碼,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot多個(gè)定時(shí)任務(wù)阻塞問題的解決方法,需要的朋友可以參考下

前言

今天這篇文章介紹一下Spring Boot 中 如何開啟多線程定時(shí)任務(wù)?

為什么Spring Boot 定時(shí)任務(wù)是單線程的?

想要解釋為什么,一定要從源碼入手,直接從@EnableScheduling這個(gè)注解入手,找到了這個(gè)ScheduledTaskRegistrar類,其中有一段代碼如下:

protected void scheduleTasks() {
  if (this.taskScheduler == null) {
   this.localExecutor = Executors.newSingleThreadScheduledExecutor();
   this.taskScheduler = new ConcurrentTaskScheduler(this.localExecutor);
  }
}

如果taskScheduler為null,則創(chuàng)建單線程的線程池:Executors.newSingleThreadScheduledExecutor()。

多線程定時(shí)任務(wù)如何配置?

下面介紹三種方案配置多線程下的定時(shí)任務(wù)。

1、重寫SchedulingConfigurer#configureTasks()

直接實(shí)現(xiàn)SchedulingConfigurer這個(gè)接口,設(shè)置taskScheduler,代碼如下:

@Configuration
public class ScheduleConfig implements SchedulingConfigurer {
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        //設(shè)定一個(gè)長度10的定時(shí)任務(wù)線程池
        taskRegistrar.setScheduler(Executors.newScheduledThreadPool(10));
    }
}

2、通過配置開啟

Spring Boot quartz 已經(jīng)提供了一個(gè)配置用來配置線程池的大小,如下;

spring.task.scheduling.pool.size=10

只需要在配置文件中添加如上的配置即可生效!

3、結(jié)合@Async

@Async這個(gè)注解都用過,用來開啟異步任務(wù)的,使用@Async這個(gè)注解之前一定是要先配置線程池的,配置如下:

    @Bean
    public ThreadPoolTaskExecutor taskExecutor() {
        ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor();
        poolTaskExecutor.setCorePoolSize(4);
        poolTaskExecutor.setMaxPoolSize(6);
        // 設(shè)置線程活躍時(shí)間(秒)
        poolTaskExecutor.setKeepAliveSeconds(120);
        // 設(shè)置隊(duì)列容量
        poolTaskExecutor.setQueueCapacity(40);
        poolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        // 等待所有任務(wù)結(jié)束后再關(guān)閉線程池
        poolTaskExecutor.setWaitForTasksToCompleteOnShutdown(true);
        return poolTaskExecutor;
    }

然后在@Scheduled方法上標(biāo)注@Async這個(gè)注解即可實(shí)現(xiàn)多線程定時(shí)任務(wù),代碼如下:

 @Async
    @Scheduled(cron = "0/2 * * * * ? ")
    public void test2() {
        System.out.println("..................執(zhí)行test2.................");
    }

總結(jié)

本篇文章介紹了Spring Boot 中 實(shí)現(xiàn)多線程定時(shí)任務(wù)的三種方案,你喜歡哪一種?

到此這篇關(guān)于Spring Boot多個(gè)定時(shí)任務(wù)阻塞問題解決的文章就介紹到這了,更多相關(guān)SpringBoot多定時(shí)任務(wù)阻塞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java處理Markdown格式轉(zhuǎn)換為Word文檔

    Java處理Markdown格式轉(zhuǎn)換為Word文檔

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)處理Markdown格式轉(zhuǎn)換為Word文檔,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2025-03-03
  • java調(diào)用短信貓發(fā)短信示例

    java調(diào)用短信貓發(fā)短信示例

    這篇文章主要介紹了java調(diào)用短信貓發(fā)短信示例,需要的朋友可以參考下
    2014-04-04
  • 一文搞懂hashCode()和equals()方法的原理

    一文搞懂hashCode()和equals()方法的原理

    這篇文章主要介紹了詳解hashCode()和equals()的本質(zhì)區(qū)別和聯(lián)系,本文先對(duì)兩種方法作了介紹,然后對(duì)二者聯(lián)系進(jìn)行分析,具有一定參考價(jià)值,需要的朋友可以了解下
    2020-06-06
  • java中Map接口常用的方法解讀

    java中Map接口常用的方法解讀

    這篇文章主要介紹了java中Map接口常用的方法解讀,Map接口是雙列集合,它的每一個(gè)元素都包含一個(gè)鍵對(duì)象key和值對(duì)象Value,鍵和值對(duì)象之間存在一種對(duì)應(yīng)關(guān)系,稱為映射,需要的朋友可以參考下
    2024-01-01
  • Springboot?整合maven插口調(diào)用maven?release?plugin實(shí)現(xiàn)一鍵打包功能

    Springboot?整合maven插口調(diào)用maven?release?plugin實(shí)現(xiàn)一鍵打包功能

    這篇文章主要介紹了Springboot?整合maven插口調(diào)用maven?release?plugin實(shí)現(xiàn)一鍵打包功能,整合maven-invoker使程序去執(zhí)行mvn命令,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • 徹底解決tomcat中文亂碼問題方案

    徹底解決tomcat中文亂碼問題方案

    這篇文章主要介紹了徹底解決tomcat中文亂碼問題方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • spring注解在自定義jar包中無法被掃描的解決方案

    spring注解在自定義jar包中無法被掃描的解決方案

    這篇文章主要介紹了spring注解在自定義jar包中無法被掃描的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java的JSON格式轉(zhuǎn)換庫GSON的初步使用筆記

    Java的JSON格式轉(zhuǎn)換庫GSON的初步使用筆記

    GSON是Google開發(fā)并在在GitHub上開源的Java對(duì)象與JSON互轉(zhuǎn)功能類庫,在Android開發(fā)者中也大受歡迎,這里我們就來看一下Java的JSON格式轉(zhuǎn)換庫GSON的初步使用筆記:
    2016-06-06
  • SpringBoot集成WebSocket實(shí)現(xiàn)后臺(tái)向前端推送信息的示例

    SpringBoot集成WebSocket實(shí)現(xiàn)后臺(tái)向前端推送信息的示例

    這篇文章主要介紹了SpringBoot集成WebSocket實(shí)現(xiàn)后臺(tái)向前端推送信息的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 在SpringBoot中配置日期格式化的方法詳解

    在SpringBoot中配置日期格式化的方法詳解

    通常情況下,發(fā)起一個(gè) Http 請(qǐng)求,Spring Boot 會(huì)根據(jù)請(qǐng)求路徑映射到指定 Controller 上的某個(gè)方法的參數(shù)上,接著,Spring 會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換,對(duì)于日期類型的參數(shù),Spring 默認(rèn)是沒有配置如何將字符串轉(zhuǎn)換成日期類型的,本文將給大家介紹在SpringBoot中配置日期格式化的方法
    2023-10-10

最新評(píng)論

成都市| 穆棱市| 农安县| 武宁县| 玛多县| 达日县| 织金县| 佛冈县| 个旧市| 微博| 中江县| 巴楚县| 凤山县| 林甸县| 乌什县| 望江县| 南丹县| 博乐市| 开封县| 清水河县| 米泉市| 沁阳市| 柳州市| 巧家县| 招远市| 温泉县| 扎鲁特旗| 苏尼特左旗| 普兰店市| 洛隆县| 清苑县| 万载县| 张家港市| 金寨县| 南陵县| 临朐县| 铁力市| 通榆县| 苍南县| 香河县| 虞城县|