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

聊聊SpringBoot的@Scheduled的并發(fā)問題

 更新時間:2021年11月02日 14:48:00   作者:正兒八經(jīng)的胡說八道  
這篇文章主要介紹了聊聊SpringBoot的@Scheduled的并發(fā)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot @Scheduled的并發(fā)

由于SpringBoot自帶的@Scheduled是一個阻塞執(zhí)行的定時任務(wù),所以效率會很慢,就會造成同一個時間段內(nèi)只有一個定時任務(wù)在執(zhí)行,其余的就會阻塞

現(xiàn)有兩個定時任務(wù)

@Component("aa")
public class aa {
    @Scheduled(cron = "0 44 17 * * ?")
    public void bb() {
        try {
            System.out.println("aa執(zhí)行時間:" + new Date());
            Thread.sleep(65000);
            System.out.println("aa完成時間:" + new Date());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
@Component("bb")
public class bb {
    @Scheduled(cron = "0 55 17 * * ?")
    public void aa() {
        try {
            System.out.println("bb執(zhí)行時間:" + new Date());
            Thread.sleep(10000);
            System.out.println("bb完成時間:" + new Date());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

默認(rèn)的在啟動項(xiàng)加入@EnableScheduling注解就可以運(yùn)行了

在這里插入圖片描述

最終,執(zhí)行的結(jié)果令人大跌眼鏡。

在這里插入圖片描述

aa的任務(wù)由于執(zhí)行時間需要65秒,超過了bb任務(wù)執(zhí)行的時間,結(jié)果bb任務(wù)執(zhí)行的時間被阻塞掉,延遲了5秒執(zhí)行。

解決方法是在啟動項(xiàng)類中加入如下配置即可

 @Bean
    public TaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        taskScheduler.setPoolSize(50);
        return taskScheduler;
    }

如果是xml

 <!-- 注解式 -->
 <task:annotation-driven executor="myExecutor" scheduler="myScheduler"/>
 <task:executor id="myExecutor" pool-size="5"/>
 <task:scheduler id="myScheduler" pool-size="10"/>

spring @Scheduled 并發(fā)執(zhí)行

spring @Scheduled ,默認(rèn)基于單線程執(zhí)行,如果需要基于多線程執(zhí)行,需要在配置文件中配置如下

queue-capacity="500" rejection-policy="CALLER_RUNS" />
scheduler="scheduler" />

具體可以參考spring 幫助文檔對annotation-driven的executor和scheduler的解釋

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中invokedynamic字節(jié)碼指令問題

    Java中invokedynamic字節(jié)碼指令問題

    這篇文章主要介紹了Java中invokedynamic字節(jié)碼指令問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • Maven導(dǎo)入依賴時爆紅的幾種解決方法

    Maven導(dǎo)入依賴時爆紅的幾種解決方法

    使用idea建立maven項(xiàng)目,maven導(dǎo)入依賴報(bào)紅,本文主要介紹了Maven導(dǎo)入依賴時爆紅的幾種解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 圖文詳解mybatis+postgresql平臺搭建步驟

    圖文詳解mybatis+postgresql平臺搭建步驟

    從頭開始搭建一個mybatis+postgresql平臺,這篇文章主要介紹了圖文詳解mybatis+postgresql平臺搭建步驟,感興趣的小伙伴們可以參考一下
    2016-07-07
  • mybatis-plus支持null字段全量更新的兩種方法

    mybatis-plus支持null字段全量更新的兩種方法

    本文主要介紹了mybatis-plus支持null字段全量更新的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 解決SpringBoot jar包中的文件讀取問題實(shí)現(xiàn)

    解決SpringBoot jar包中的文件讀取問題實(shí)現(xiàn)

    這篇文章主要介紹了解決SpringBoot jar包中的文件讀取問題實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java實(shí)現(xiàn)特定范圍的完數(shù)輸出算法示例

    Java實(shí)現(xiàn)特定范圍的完數(shù)輸出算法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)特定范圍的完數(shù)輸出算法,簡單說明了完數(shù)的概念、計(jì)算原理并結(jié)合實(shí)例形式分析了java針對給定范圍內(nèi)的完數(shù)輸出操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-12-12
  • SpringBoot Maven項(xiàng)目中Model間的最佳繼承設(shè)計(jì)詳解

    SpringBoot Maven項(xiàng)目中Model間的最佳繼承設(shè)計(jì)詳解

    這篇文章主要為大家詳細(xì)介紹了SpringBoot中一個優(yōu)秀Maven項(xiàng)目的各Model間最佳繼承設(shè)計(jì)的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2024-01-01
  • Java線程組與未處理異常實(shí)例分析

    Java線程組與未處理異常實(shí)例分析

    這篇文章主要介紹了Java線程組與未處理異常,結(jié)合實(shí)例形式分析了java線程組處理異常的相關(guān)技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • Java面試必考之如何在項(xiàng)目中優(yōu)雅的拋出異常

    Java面試必考之如何在項(xiàng)目中優(yōu)雅的拋出異常

    這篇文章主要為大家詳細(xì)介紹了Java中的幾種異常關(guān)鍵字和異常類相關(guān)知識,本文比較適合剛?cè)肟覬ava的小白以及準(zhǔn)備秋招的大佬閱讀,需要的可以收藏一下
    2023-06-06
  • JAVA中方法的聲明及使用方式(繼承、多態(tài)、封裝)

    JAVA中方法的聲明及使用方式(繼承、多態(tài)、封裝)

    這篇文章主要介紹了JAVA中方法的聲明及使用方式(繼承、多態(tài)、封裝),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評論