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

Spring 定時(shí)任務(wù)@Scheduled 注解四大參數(shù)用法解析

 更新時(shí)間:2025年01月24日 09:53:27   作者:Yeats_Liao  
本文詳細(xì)介紹了Spring框架中使用@Scheduled注解實(shí)現(xiàn)定時(shí)任務(wù)的方法,重點(diǎn)講解了fixedRate、fixedDelay、cron和initialDelay這四個(gè)參數(shù)的用法,并通過實(shí)例代碼進(jìn)行了詳細(xì)說明,感興趣的朋友一起看看吧

本文主要介紹了在 Spring 框架中使用@Scheduled注解實(shí)現(xiàn)定時(shí)任務(wù)的方法,重點(diǎn)講解了fixedRate、fixedDelay、cron和initialDelay這四個(gè)參數(shù)的用法,并通過實(shí)例代碼進(jìn)行了詳細(xì)說明。

1. fixedRate 參數(shù)

參數(shù)含義

fixedRate指定任務(wù)固定時(shí)間間隔執(zhí)行。如設(shè)為 3000 毫秒(3 秒),第一次任務(wù)啟動(dòng)后,后續(xù)任務(wù)每隔 3 秒嘗試啟動(dòng),不考慮前次任務(wù)是否完成。

示例代碼

創(chuàng)建一個(gè)簡(jiǎn)單的 Spring Boot 項(xiàng)目,并在主類上添加@SpringBootApplication注解以啟用 Spring Boot 自動(dòng)配置。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling // 啟用定時(shí)任務(wù)功能
public class ScheduledDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(ScheduledDemoApplication.class, args);
    }
}

創(chuàng)建一個(gè)定時(shí)任務(wù)類,doTask方法被@Scheduled注解修飾,fixedRate設(shè)置為 3000 毫秒。在方法內(nèi)部,我們首先打印出執(zhí)行次數(shù)和當(dāng)前時(shí)間,然后通過Thread.sleep模擬任務(wù)執(zhí)行耗時(shí) 5 秒。運(yùn)行應(yīng)用程序后,你會(huì)發(fā)現(xiàn)盡管任務(wù)執(zhí)行時(shí)間超過了 3 秒,但每隔 3 秒就會(huì)有一次新的任務(wù)嘗試啟動(dòng),導(dǎo)致任務(wù)會(huì)重疊執(zhí)行。

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class FixedRateTask {
    private int count = 0;
    @Scheduled(fixedRate = 3000)
    public void doTask() {
        System.out.println("FixedRateTask - 執(zhí)行次數(shù): " + (++count) + ",當(dāng)前時(shí)間: " + System.currentTimeMillis());
        try {
            // 模擬任務(wù)執(zhí)行耗時(shí) 5 秒
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

2. fixedDelay 參數(shù)

參數(shù)含義

fixedRate不同,fixedDelay參數(shù)關(guān)注的是上一次任務(wù)執(zhí)行完成后的延遲時(shí)間。也就是說,只有當(dāng)上一次任務(wù)徹底結(jié)束后,才會(huì)開始計(jì)算固定的延遲時(shí)間,之后才啟動(dòng)下一次任務(wù)。例如,設(shè)置fixedDelay = 3000毫秒,那么在上一次任務(wù)完成后,會(huì)等待 3 秒才開始下一次任務(wù)。

示例代碼

創(chuàng)建一個(gè)FixedDelayTask類,doTask方法的fixedDelay設(shè)置為 3000 毫秒,任務(wù)模擬執(zhí)行耗時(shí) 2 秒。運(yùn)行后可以看到,每次任務(wù)執(zhí)行完成后,會(huì)等待 3 秒才開始下一次任務(wù),任務(wù)不會(huì)重疊執(zhí)行。

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class FixedDelayTask {
    private int count = 0;
    @Scheduled(fixedDelay = 3000)
    public void doTask() {
        System.out.println("FixedDelayTask - 執(zhí)行次數(shù): " + (++count) + ",當(dāng)前時(shí)間: " + System.currentTimeMillis());
        try {
            // 模擬任務(wù)執(zhí)行耗時(shí) 2 秒
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

3. cron 參數(shù)

參數(shù)含義

cron參數(shù)提供了一種高度靈活的定時(shí)任務(wù)執(zhí)行時(shí)間設(shè)置方式。它基于 cron 表達(dá)式,該表達(dá)式由 6 個(gè)或 7 個(gè)字段組成,分別對(duì)應(yīng)秒、分鐘、小時(shí)、日、月、星期(星期可以用數(shù)字 0 - 6 表示,其中 0 或 7 代表星期日)以及可選的年。通過合理組合這些字段的值,可以精確地定義任務(wù)在何時(shí)執(zhí)行。

示例代碼

創(chuàng)建一個(gè)CronTask類,cron表達(dá)式"0 0/5 * * * *"表示每隔 5 分鐘執(zhí)行一次任務(wù)。例如,任務(wù)可能在 10:00:00、10:05:00、10:10:00 等時(shí)間點(diǎn)執(zhí)行。:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class CronTask {
    @Scheduled(cron = "0 0/5 * * * *")
    public void doTask() {
        System.out.println("CronTask - 執(zhí)行時(shí)間: " + System.currentTimeMillis());
    }
}

4. initialDelay 參數(shù)

參數(shù)含義

initialDelay參數(shù)用于指定定時(shí)任務(wù)在應(yīng)用啟動(dòng)后首次執(zhí)行的延遲時(shí)間。它可以與fixedRate、fixedDelaycron等參數(shù)結(jié)合使用,以便在應(yīng)用啟動(dòng)后等待一段時(shí)間再開始執(zhí)行定時(shí)任務(wù)。

示例代碼

創(chuàng)建一個(gè)InitialDelayTask類,、fixedRate設(shè)置為 3000 毫秒,initialDelay設(shè)置為 5000 毫秒。這意味著應(yīng)用啟動(dòng)后,會(huì)先等待 5 秒,然后才開始按照每 3 秒的固定間隔執(zhí)行任務(wù)。

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class InitialDelayTask {
    private int count = 0;
    @Scheduled(fixedRate = 3000, initialDelay = 5000)
    public void doTask() {
        System.out.println("InitialDelayTask - 執(zhí)行次數(shù): " + (++count) + ",當(dāng)前時(shí)間: " + System.currentTimeMillis());
    }
}

5. 總結(jié)

  • 對(duì)于一些對(duì)實(shí)時(shí)性要求較高且執(zhí)行時(shí)間較短的任務(wù),可以考慮使用fixedRate;
  • 對(duì)于執(zhí)行時(shí)間較長(zhǎng)且不希望任務(wù)重疊的任務(wù),fixedDelay可能更為合適;
  • 對(duì)于需要在特定時(shí)間點(diǎn)或按照復(fù)雜時(shí)間規(guī)則執(zhí)行的任務(wù),cron表達(dá)式則是不二之選。
  • initialDelay參數(shù)可以幫助我們更好地控制任務(wù)的啟動(dòng)時(shí)間,避免在應(yīng)用啟動(dòng)初期因大量任務(wù)同時(shí)啟動(dòng)而帶來的性能壓力。

到此這篇關(guān)于Spring 定時(shí)任務(wù)@Scheduled 注解四大參數(shù)解析的文章就介紹到這了,更多相關(guān)Spring 定時(shí)任務(wù)@Scheduled 注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java設(shè)計(jì)模式之代理模式

    Java設(shè)計(jì)模式之代理模式

    這篇文章介紹了Java設(shè)計(jì)模式之代理模式,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • jpa?EntityManager?復(fù)雜查詢實(shí)例

    jpa?EntityManager?復(fù)雜查詢實(shí)例

    這篇文章主要介紹了jpa?EntityManager?復(fù)雜查詢實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java調(diào)用DeepSeek?API的8個(gè)高頻坑與解決方法

    Java調(diào)用DeepSeek?API的8個(gè)高頻坑與解決方法

    現(xiàn)在大模型開發(fā)特別火,DeepSeek?因?yàn)橹形睦斫夂?、反?yīng)快、還便宜,不少?Java?開發(fā)者都用它,本文整理了最常踩的?8?個(gè)坑,希望對(duì)大家有所幫助
    2025-12-12
  • Java延時(shí)任務(wù)實(shí)現(xiàn)方案及四大典型場(chǎng)景詳解(適用于Spring?Boot3)

    Java延時(shí)任務(wù)實(shí)現(xiàn)方案及四大典型場(chǎng)景詳解(適用于Spring?Boot3)

    在Java編程中,延時(shí)函數(shù)是一種常用的技術(shù),用于在程序執(zhí)行過程中暫停一段時(shí)間,這篇文章主要介紹了Java延時(shí)任務(wù)實(shí)現(xiàn)方案及四大典型場(chǎng)景(適用于SpringBoot3)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-05-05
  • java文件讀寫工具類分享

    java文件讀寫工具類分享

    這篇文章主要為大家詳細(xì)介紹了java文件讀寫工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • java連接mysql數(shù)據(jù)庫(kù)詳細(xì)步驟解析

    java連接mysql數(shù)據(jù)庫(kù)詳細(xì)步驟解析

    以下是對(duì)java連接mysql數(shù)據(jù)庫(kù)的具體詳細(xì)步驟進(jìn)行了分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • 聊聊Java中是什么方法導(dǎo)致的線程阻塞

    聊聊Java中是什么方法導(dǎo)致的線程阻塞

    這篇文章主要介紹了聊聊Java中是什么方法導(dǎo)致的線程阻塞,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • MyBatis中的collection兩種使用方法及效率比較

    MyBatis中的collection兩種使用方法及效率比較

    collection主要是應(yīng)對(duì)表關(guān)系是一對(duì)多的情況,本文主要介紹了MyBatis中的collection兩種使用方法及效率比較,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • MyBatis-Plus標(biāo)簽@TableField之fill自動(dòng)填充方式

    MyBatis-Plus標(biāo)簽@TableField之fill自動(dòng)填充方式

    這篇文章主要介紹了MyBatis-Plus標(biāo)簽@TableField之fill自動(dòng)填充方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • java中字符串常見的方法及總結(jié)

    java中字符串常見的方法及總結(jié)

    這篇文章主要介紹了java中字符串常見的方法及總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評(píng)論

太保市| 托克逊县| 旬邑县| 五河县| 北碚区| 阜平县| 静宁县| 乃东县| 凤台县| 商城县| 城口县| 商水县| 建德市| 安溪县| 石屏县| 尉氏县| 婺源县| 常州市| 富平县| 易门县| 阜宁县| 壤塘县| 涡阳县| 涡阳县| 滕州市| 丰镇市| 咸宁市| 邳州市| 淮阳县| 镇原县| 道孚县| 仪征市| 宾川县| 海丰县| 阳春市| 体育| 乌拉特后旗| 广东省| 柞水县| 遵义市| 乡宁县|