请教@Scheduled(cron="0 0 0/24 * * ?")的执行时机及0/24含义
解析@Scheduled的Cron表达式:
0 0 0/24 * * ? 首先得明确,Spring框架里@Scheduled注解用的Cron表达式,和你熟悉的传统Unix Cron格式不一样,它的6位顺序是:秒 分 时 日 月 周几。
现在拆解你看到的这段表达式:
- 第一位
0:秒位,意思是整分的第0秒触发 - 第二位
0:分位,指定整点的第0分触发 - 第三位
0/24:这是时位,/是步长标记,0/24表示从0点开始,每隔24小时触发一次 - 第四位
*:日位,代表每个月的任意一天都符合条件 - 第五位
*:月位,代表任意月份都生效 - 第六位
?:周几位,?表示不指定具体星期几——Cron规则里不能同时明确指定日和周的具体值,必须用?忽略其中一个,避免规则冲突
为什么这个表达式是每天运行一次?
因为0/24在时位,从0点开始每24小时触发一次,再结合秒和分都设为0,就刚好固定在每天的0点0分0秒执行任务。
补充一句:其实更直观的写法是0 0 0 * * ?,和0 0 0/24 * * ?效果完全相同,后者只是用步长逻辑来表达“每隔24小时”的触发规则。
内容的提问来源于stack exchange,提问作者Deepak
相关产品推荐
相关产品推荐

