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

Spring @Scheduled的坑及解決

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

Spring @Scheduled的坑

spring的定時任務有兩個坑

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

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

解決辦法

加上@EnableAsync注解

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

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

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

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

解決:進行try…catch異常拋出

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

原因是:

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

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

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

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

方法1、在啟動類中配置TaskScheduler線程池大小:

public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(10);//不配置默認是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è)務邏輯
}

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

總結

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

相關文章

  • 關于Java反射機制 你需要知道的事情

    關于Java反射機制 你需要知道的事情

    這篇文章主要介紹了Java反射機制的相關內容,涉及了class類的動態(tài)加載,獲取成員變量、構造函數信息等信息,需要的朋友可以參考下。
    2017-09-09
  • 如何調用chatGPT實現代碼機器人

    如何調用chatGPT實現代碼機器人

    最近chatGPT也是非常的火爆,相信大家都看到了,現在提供一種Java調用chatGPT的方法,我們主要通過兩個工具來實現,一就是httpclient,二就是hutool,你覺得那種好理解你就用那種即可,今天通過本文給大家分享調用chatGPT實現代碼機器人,感興趣的朋友一起看看吧
    2022-12-12
  • Java中判斷對象是否為空的方法的詳解

    Java中判斷對象是否為空的方法的詳解

    這篇文章主要介紹了Java中判斷對象是否為空的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • java 中動態(tài)代理(JDK,cglib)實例代碼

    java 中動態(tài)代理(JDK,cglib)實例代碼

    這篇文章主要介紹了java 中動態(tài)代理,這里介紹了JDK 動態(tài)代理與 cglib 動態(tài)代理的相關資料
    2017-04-04
  • SpringBoot中swagger的使用

    SpringBoot中swagger的使用

    這篇文章主要介紹了SpringBoot中swagger的使用,文中有非常詳細的代碼示例,對正在學習swagger的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • Spring Boot中RabbitMQ自動配置的介紹、原理和使用方法

    Spring Boot中RabbitMQ自動配置的介紹、原理和使用方法

    本文介紹了Spring Boot中RabbitMQ自動配置的介紹、原理和使用方法,通過本文的介紹,我們希望讀者能夠更好地理解Spring Boot中RabbitMQ的使用方法,并在項目中更加靈活地應用,感興趣的朋友跟隨小編一起看看吧
    2023-07-07
  • 初識Spring boot監(jiān)控

    初識Spring boot監(jiān)控

    這篇文章主要介紹了spring boot監(jiān)控的相關知識,文中給大家介紹了查看監(jiān)控數據,數據可視化的相關知識,需要的朋友可以參考下
    2018-03-03
  • idea提交文件時如何忽略某些文件的提交

    idea提交文件時如何忽略某些文件的提交

    這篇文章主要介紹了idea提交文件時如何忽略某些文件的提交問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 談談java的concurrent用法

    談談java的concurrent用法

    這篇文章給大家介紹java的concurrent用法,感興趣的朋友一起學習吧
    2015-10-10
  • Java后端傳時間戳給前端的三種方式

    Java后端傳時間戳給前端的三種方式

    時間戳是一份能夠表示一份數據在一個特定時間點已經存在的完整的可驗證的數據,本文給大家介紹了Java后端傳時間戳給前端的三種方式,并通過代碼示例講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-12-12

最新評論