springboot之定時任務
第一步:要在啟動類上添加註解@EnableScheduling開啟定時任務
- @EnableScheduling
- @SpringBootApplication
- public class FirstApplication {
- private static Logger log = LoggerFactory.getLogger(FirstApplication.class);
- public static void main(String[] args) {
- SpringApplication.run(FirstApplication.class, args);
- }
- }
第二步:創建定時任務類,交給spring管理
- package com.springboot.first.task;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- @Component
- public class TaskTest {
- @Scheduled(cron = "0/10 * * * * ?")
- public void task1(){
- DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- System.out.println(sdf.format(new Date())+"------------task1---10秒執行一次");
- }
- @Scheduled(cron = "0/5 * * * * ?")
- public void task2(){
- DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- System.out.println(sdf.format(new Date())+"------------task2---5秒執行一次");
- }
- }
第三步:設置執行時間@Scheduled(cron="0/10 * * * * ?"),cron表達式設置規則如下:
欄位 允許值 允許的特殊字元
秒 0-59 , - * /
分 0-59 , - * /
小時 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可選) 留空, 1970-2099 , - * /
, 表達一個列表值,如在星期欄位中使用 1,2,4 ,則表示星期天,星期一,星期三
- 區間 表示一個區間範圍
* 通配符
? 你不想設置那個欄位,目前只能出現在日期和星期這兩個位置
/ 如:x/y,x是開始值,y是步長,比如在第一位(秒) 0/10就是,從0秒開始,每10秒
# #號只能出現在星期的位置,例如:(0 10 3 ? * 1#3 ) 每個月的第三個星期的星期天的3點10分執行
除了通過cron表達式設置時間,還有以下幾種:
@Scheduled(fixedRate = 5000) :上一次開始執行時間點之後5秒再執行(不在乎執行了多長時間,每五秒執行一次)
@Scheduled(fixedDelay = 5000) :上一次執行完畢時間點之後5秒再執行
@Scheduled(initialDelay=1000, fixedRate=5000) :第一次延遲1秒後執行,之後按fixedRate的規則每5秒執行一次
運行結果:
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
※win10 uwp教你使用 asp dotnet core 做 cs 程序
※動態添加控制項及刪除
TAG:程序員小新人學習 |