SpringBoot定時任務(wù)

用SpringBoot做定時任務(wù)只需要添加相應(yīng)的注解就okay,相當(dāng)簡單。

1.在啟動類上添加@EnableScheduling注解

@SpringBootApplication
@EnableScheduling 
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

2.定時任務(wù)實現(xiàn)類:

定時任務(wù)有兩種實現(xiàn)方式

@Component
public class SchedulerTask {

    private int count = 0;

    @Scheduled(cron = "*/6 * * * * ?")
    private void process(){
        System.out.println("this is scheduler task runing  "+(count++));
    }
}

@Component
public class Scheduler2Task {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    @Scheduled(initialDelay=12000, fixedRate = 6000)
    public void reportCurrentTime() {
        System.out.println("現(xiàn)在時間:" + dateFormat.format(new Date()));
    }
}

3. Scheduled說明

@Scheduled接受兩種定時的設(shè)置,一種是我們常用的cron="*/6 * * * * ?",一種是 fixedRate = 6000,兩種都表示每隔六秒打印一下內(nèi)容。

@Scheduled(fixedRate = 6000):上一次開始執(zhí)行時間點之后6秒再執(zhí)行
@Scheduled(fixedDelay = 6000):上一次執(zhí)行完畢時間點之后6秒再執(zhí)行
@Scheduled(initialDelay=1000, fixedRate=6000):第一次延遲1秒后執(zhí)行,之后按fixedRate的規(guī)則每6秒執(zhí)行一次

4. cron說明

Cron表達式是一個字符串,字符串以5或6個空格隔開,分為6或7個域,每一個域代表一個含義,Cron有如下兩種語法格式:

Seconds Minutes Hours DayofMonth Month DayofWeek Year或
Seconds Minutes Hours DayofMonth Month DayofWeek

(1)*:表示匹配該域的任意值,假如在Minutes域使用, 即表示每分鐘都會觸發(fā)事件。
(2)?:只能用在DayofMonth和DayofWeek兩個域。它也匹配域的任意值,但實際不會。因為DayofMonth和DayofWeek會相互影響。例如想在每月的20日觸發(fā)調(diào)度,不管20日到底是星期幾,則只能使用如下寫法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用
,如果使用*表示不管星期幾都會觸發(fā),實際上并不是這樣。
(3)-:表示范圍,例如在Minutes域使用5-20,表示從5分到20分鐘每分鐘觸發(fā)一次
(4)/:表示起始時間開始觸發(fā),然后每隔固定時間觸發(fā)一次,例如在Minutes域使用5/20,則意味著5分鐘觸發(fā)一次,而25,45等分別觸發(fā)一次.
(5),:表示列出枚舉值值。例如:在Minutes域使用5,20,則意味著在5和20分每分鐘觸發(fā)一次。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容