cron 表达式
字段说明
序号 | 字段 | 允许值 | 允许的特殊字符 | 是否必填 |
---|
1 | 秒 | 0-59 | , - * / | Y |
2 | 分 | 0-59 | , - * / | Y |
3 | 小时 | 0-23 | , - * / | Y |
4 | 日期 | 1-31 | , - * ? / L W C | Y |
5 | 月份 | 1-12 | , - * / | Y |
6 | 星期 | 1-7 | , - * ? / L C # | Y |
7 | 年 | 1970-2099 | , - * / | N |
特殊字符说明
特殊字符 | 说明 | 实例 |
---|
, | 枚举具体值 | 星期:MON,WED,FRI |
- | 表示范围 | 小时:10-12 |
* | 任意值 | 小时:* 表示每小时 |
/ | 指定增量 | 秒:5/30 , 从第5秒开始,每增加30秒执行一次 |
? | 日期或星期栏中,两个字段会冲突,表示非明确的值 | 0 0 12 ? * WED 每周三12点 |
L | 一个月中最后几天或一个星期中最后几天 | 日期:3L 最后第3天,星期:6L ,最后一个星期5 |
W | 最近的工作日 | 日期:15W ,15日的最近工作日。LW 月最后一天最近的工作日 |
C | 依靠指定日历 | 暂不明确其用途 |
# | 那周的周几 | 6#3 ,第3周的周5,4#5 : 第5周的周3 |
demo
实例 | 说明 |
---|
0 15 10 ? * 6L 2002-2005 | 2002年至2005年每月的最后一个星期5上午10:15触发 |
0 15 10 ? * 6#3 | 每月的第三个星期五上午10:15触发 |
spring-boot 中应用
@SpringBootApplication
@EnableScheduling
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@Component
public class OrderTimeOutCancelTask {
/**
* cron表达式:Seconds Minutes Hours DayofMonth Month DayofWeek [Year]
* 每10分钟扫描一次
*/
@Scheduled(cron = "0 0/10 * ? * ?")
private void cancelTimeOutOrder(){
}
//启动后,每 1000ms 执行一次
@Scheduled(fixedRate = 1000)
public void fixedRateSch() {
}
// 启动后,延时 3000ms 后执行第一次,之后每一次在前一次执行完后 1000ms 再执行
@Scheduled(fixedDelay = 1000, initialDelay = 3000)
public void fixedDelaySch() {
}
}
参考