最新国产好看的视频,伊人天堂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í)行

解決:進行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 // 對某個方法進行異步執(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)文章

最新評論

大城县| 边坝县| 柞水县| 尼木县| 桂平市| 宁强县| 烟台市| 荥经县| 永清县| 秀山| 交口县| 方城县| 南丹县| 屏边| 额济纳旗| 镇坪县| 辽阳市| 舒兰市| 太原市| 泸水县| 江门市| 犍为县| 策勒县| 玉田县| 阳原县| 平顶山市| 澜沧| 宣武区| 乌兰浩特市| 神木县| 赫章县| 资溪县| 高密市| 保德县| 四平市| 凤翔县| 霍州市| 乌审旗| 竹北市| 襄垣县| 红原县|