springboot使用@Scheduled作定时任务详细用法
生活随笔
收集整理的這篇文章主要介紹了
springboot使用@Scheduled作定时任务详细用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
springboot中quartz可以作定時任務,@Scheduled也可以
Spring Boot啟動類標注@EnableScheduling,然后再開發一個服務類,:
測試簡易定時任務:
package com.springboot.chapter13.service.impl; /**** imports ****/ @Service public class ScheduleServiceImpl {// 計數器int count1 = 1;int count2 = 1;// 每隔一秒執行一次@Scheduled(fixedRate = 1000)// 使用異步執行@Asyncpublic void job1() {System.out.println("【" +Thread.currentThread().getName()+"】"+ "【job1】每秒鐘執行一次,執行第【" + count1 + "】次");count1 ++;}// 每隔一秒執行一次@Scheduled(fixedRate = 1000)// 使用異步執行@Asyncpublic void job2() {System.out.println("【" +Thread.currentThread().getName()+"】"+ "【job2】每秒鐘執行一次,執行第【" + count2 + "】次");count2 ++;}}這里的注解@Scheduled配置為按時間間隔執行,每隔1 s便執行一次。使用@Async注解代表這需要使用異步線程執行,上述中@Scheduled只是按照時間間隔執行,有時候需要指定更為具體的時間,例如,每天晚上11:00開始跑批量生成報表,或者一些任務在每周日執行。為了能夠更為精確地指定任務執行的時間,所以有必要更為細致地研究@Scheduled的配置項,如表13-1所示。
表13-1中的配置項除了cron外都比較好理解,只有cron是可以通過表達式更為靈活地配置運行的方式。cron有6~7個空格分隔的時間元素,按順序依次是“秒 分 時 天 月 星期 年”,其中年是一個可以不配置的元素,例如下面的配置:
0 0 0 ? * WED 這個配置表示每個星期三中午0點整。這個表達式需要注意的是其中的特殊字符,如?和*,這里因為天和星期會產生定義上的沖突,所以往往會以通配符?表示,它表示不指定值,而*則表示任意的月。除此以外還會有表13-2所示的其他通配符。 表13-2 通配符含義 為了說明它們的使用,下面舉例如表13-3所示。
cron表達式:
總結
以上是生活随笔為你收集整理的springboot使用@Scheduled作定时任务详细用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot使用异步线程池执行自
- 下一篇: ubuntu使用rabbitmq的一些基