實現定時任務的方案有多種,比如jdk timer、spring task和quartz,其中支持按日曆調度的方案有spring task和quartz。
cron表達式
Cron 表達式是由七個子表達式組成的字符串,用於描述各個細節,子表達式通過空格分隔。
比如:0 0/5 * * * ? 每隔5分鐘執行
- 秒(0~59)
- 分鐘(0~59)
- 小時(0~23)
- 日(1~31)
- 月(1~12)
- 星期(填寫MON,TUE,WED,THU,FRI,SAT,SUN,或數字1~7 1表示MON,依次類推)
- 年(可以不指定,有用到時需填寫,比如:2020表示2020年,2020,2021表示2020年和2021年)
通配符介紹
- “/”字符表示指定數值的增量
- “*”字符表示所有可能的值
- “-”字符表示區間範圍
- "," 字符表示列舉
- “?”字符只能在日和星期中指定使用,其作用為不指定。不支持同時指定星期幾和幾月參數
示例
0/3 * * * * ? 每隔3秒執行
0 0/1 * * * ? 每隔1分鐘執行
0 0 9 * * ? 表示每天9點執行
0 0/20 9-10 1,20 *? 每個月1號和20號上午9點到11點之間,每隔20分鐘執行
0 0 12 ? * WEN 每週三12點執行
0 30 9 ? * MON-FRI 每月的週一到週五9點30分執行
推薦一個在線cron表達式生成器
http://cron.qqe2.com/