企業開發中,咱們有時候會須要用到定時任務,spring已經爲咱們提供了相關的的功能,並且很是之簡單,咱們採用註解就能使用,下面就是一個簡單的demojava
先介紹一下開發環境:web
依賴包的話,其實springboot引入web包就行了,可是避免有人不知道,這裏仍是貼出來一份spring
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
包咱們引入進來了,而後就是註解demo啦springboot
/** * 項目名:SpringBootDemo * 建立人:賀小五 * 建立時間:16/12/30 上午11:34 * 類名:ScheduleDemo * 類描述: * spring定時器測試demo */ @EnableScheduling @Component public class ScheduleDemo { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * fixedRate多久執行一次,單位:毫秒 * initialDelay 延遲容器啓動後執行,單位:毫秒 */ @Scheduled(fixedRate = 10000,initialDelay = 2000) public void scheduleTest1(){ System.out.println("10s執行一次--->"+sdf.format(new Date())); } /** * * fixedDelay在指定的時間執行一次,單位:毫秒 * 在建立後會執行一次,在第一次執行後,會每隔5S執行一次 */ @Scheduled(fixedDelay = 5000) public void scheduleTest2(){ System.out.println("5s執行一次--->"+sdf.format(new Date())); } /** * cron表達式,下面表示,每隔1s執行一次,具體的能夠自行定義 */ @Scheduled(cron = "0/1 * * * * ? ") public void scheduleTest3(){ System.out.println("5s執行一次--->"+sdf.format(new Date())); } }
執行boot的啓動類,而後咱們就能夠觀看打印結果了:ide
咱們會發現,10S調用一次的,跟5S調用的會差2秒,是由於設定了第一次調用的延遲時間爲2Sspring-boot
下面是一些註解的註釋:工具
- @EnableScheduling 表示開啓任務調度,用於類上的註解,該註解能夠使用在boot的啓動類,也能夠使用在schedule配置類上
- @Scheduled 表示任務調用方法,用於方法上;
好了,上面就是一個簡單的任務調度器,很簡單的一個demo,具體怎麼使用,我的根據業務去就行了,下面在介紹一下,@Scheduled註解內參數的定義:開發工具
@Scheduled註解下有一些參數,例如 fixedDelay,fixedRate...等,我這大概介紹下測試
- cron 表達式,能夠指定某個時刻執行,具體的能夠使用搜索引擎,這裏就不詳細介紹了
- zone 表示時區,默認是使用本地的時區,有時候可能須要國外的,能夠使用 java.util.TimeZone時區類下的getTimeZone獲取須要的時區
- fixedDelay 表示上次執行完畢到下次執行開始間隔數,單位:毫秒
- fixedDelayString 同上,只不過填寫的是字符串,不是long類型
- fixedRate 表示上次執行完畢到下次執行開始的間隔數,單位:毫秒
- fixedRateString 同上,只不過填寫的是字符串,不是long類型
- initialDelay 推遲第一次執行以前的毫秒數在fixedRate或fixedDelay的任務,單位:毫秒
- initialDelayString 同上,只不過填寫的是字符串,不是long類型
到這,文章就結束了!搜索引擎
以上,均爲本人測試而得出的結果,可能會有出入,或者錯誤,歡迎指正
歡迎轉載,請註明出處跟做者,謝謝!