SpringBoot定時器定時調度

如何使用

SpringBoot本身已經爲我們提供了內置的定時器Scheduled,我們直接使用即可。

@Configuration
@EnableScheduling
public class SchedulingConfig {

    @Scheduled(cron = "0 0/1 * * * ?")
    public void test(){
        System.out.println("定時調度。。。。。。。。。。。。");
    }
}

@Sheduled註解

Cron屬性——String

Seconds (秒): 可出現", - * /"四個字符,有效範圍爲0-59的整數
Minutes (分): 可出現", - * /"四個字符,有效範圍爲0-59的整數
Hours (時): 可出現", - * /"四個字符,有效範圍爲0-23的整數
DayofMonth (天/月): 可出現", - * / ? L W C"八個字符,有效範圍爲0-31的整數
Month (月): 可出現", - * /"四個字符,有效範圍爲1-12的整數或JAN-DEc
DayofWeek (星期幾): 可出現", - * / ? L C #"四個字符,有效範圍爲1-7的整數或SUN-SAT兩個範圍。1表示星期天,2表示星期一, 依次類推
Year (年): 可出現", - * /"四個字符,有效範圍爲1970-2099年
推薦一個cron表達式自動生成的網站 點擊獲取

fixedRate屬性——Long

表示多長時間執行一次,單位爲ms(毫秒),後執行

fixedDelay屬性——Long

表示多長時間執行一次,單位爲ms(毫秒),先執行fixedRate與fixedDelay不同在於啓動時先走定時器fixedRate後執行代碼塊,而fixedDelay先執行代碼塊,後執行定時器,通過以下代碼來演示

@Configuration
@EnableScheduling
public class SchedulingConfig {

    @Scheduled(fixedRate = 10000)
    public void test1() throws InterruptedException {
        Thread.sleep(5000);
        System.out.println("定時任務1================");
    }

    @Scheduled(fixedRate = 10000)
    public void test2() throws InterruptedException {
        Thread.sleep(5000);
        System.out.println("定時任務2================");
    }
}

啓動application,輸出結果爲

定時任務2================
定時任務1================
定時任務2================
定時任務1================

initialDelay屬性——Long

該屬性表示第一次執行延時的時間,只針對第一次執行有效

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章