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

Spring @Scheduled的坑及解決

 更新時間:2024年08月02日 10:56:12   作者:虎哥和你一起學(xué)編程  
這篇文章主要介紹了Spring @Scheduled的坑及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Spring @Scheduled的坑

spring的定時任務(wù)有兩個坑

1.單線程執(zhí)行,多個定時任務(wù)不能同時執(zhí)行

2.如果當(dāng)前定時任務(wù)還沒有結(jié)束,那么下一次定時任務(wù)的時間到了也不會觸發(fā)。

解決辦法

加上@EnableAsync注解

@Scheduled 定時任務(wù)不執(zhí)行

排查代碼中添加的定時任務(wù)步驟是否正確

  • 啟動類上加 @EnableScheduling 注解
  • 定時任務(wù)類上加@Component
  • 定時方法上加@Scheduled
  @Scheduled(cron = "0 19 16 * * ?")
    public void cron() {
        log.info("定時任務(wù)開啟:---");
    }

排查是否任務(wù)阻塞,如果定時任務(wù)出現(xiàn)異常阻塞后,將不會在次執(zhí)行

解決:進(jìn)行try…catch異常拋出

java中多個@Scheduled定時器不執(zhí)行

原因是:

@Scheduled注解會在默認(rèn)情況下以單線程的方式執(zhí)行定時任務(wù)。

這個“單線程”指兩個方面:

  • 如果一個定時任務(wù)執(zhí)行時間大于其任務(wù)間隔時間,那么下一次將會等待上一次執(zhí)行結(jié)束后再繼續(xù)執(zhí)行。
  • 如果多個定時任務(wù)在同一時刻執(zhí)行,任務(wù)會依次執(zhí)行。

為了讓@Scheduled效率更高,我們可以通過兩種方法將定時任務(wù)變成多線程執(zhí)行:

方法1、在啟動類中配置TaskScheduler線程池大?。?/strong>

public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(10);//不配置默認(rèn)是1
return taskScheduler;
}

方法2、利用Spring提供的@Async注解和@EnableAsync注解

@Component
@EnableAsync //開啟異步支持
public class TimedTask{
@Async // 對某個方法進(jìn)行異步執(zhí)行
@Scheduled(initialDelay = 1,fixedDelay=10000)//initialDelay 在容器啟動后,延遲1毫秒再執(zhí)行一次定時器
public void aa() {
//執(zhí)行業(yè)務(wù)邏輯
}

@Async
@Scheduled(initialDelay = 1,fixedDelay=10000)//fixedDelay  以上一次方法執(zhí)行完開始算起,如上一次方法執(zhí)行阻塞住了,那么直到上一次執(zhí)行完,并間隔給定的時間后,執(zhí)行下一次
public void bb() {
//執(zhí)行業(yè)務(wù)邏輯
}

總結(jié)

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

相關(guān)文章

最新評論

海宁市| 神池县| 荃湾区| 大丰市| 新民市| 塔城市| 屯门区| 吴江市| 远安县| 北辰区| 保康县| 台东市| 耒阳市| 枝江市| 喀什市| 衡山县| 横山县| 临桂县| 肥东县| 碌曲县| 堆龙德庆县| 博乐市| 汉沽区| 大埔区| 大邑县| 墨脱县| 敖汉旗| 兴安盟| 依安县| 务川| 巴彦淖尔市| 大冶市| 长葛市| 南康市| 随州市| 洪雅县| 三河市| 通辽市| 咸阳市| 措勤县| 西乌珠穆沁旗|