Quartz cron表达式中*/30是什么含义?和0/30写法有差异吗?
Quartz @Schedule 秒域
*/30写法合理性说明 */30的写法完全合法,和常规的0/30在秒域场景下执行效果完全一致,不会引发调度问题。
Cron步长语法规则
/是Cron表达式的步长运算符,通用语法为起始值/步长,代表从指定起始值开始,每隔固定步长触发一次*在时间域中代表该域的所有合法取值,作为步长的起始值使用时,等价于取该域的最小合法值- 秒域的合法取值范围是0-59,最小值为0,因此
*/30完全等价于0/30
你提供的配置解析效果
注解@Schedule(second="*/30", minute="*", hour="*", persistent=false)会被Quartz调度器解析为:每小时、每分钟的0秒、30秒各触发一次,完全符合原代码预期的每30秒执行一次的需求。
写法差异说明
日常开发中大家更习惯写0/30,主要是为了显式声明起始值,避免在其他时间域使用步长时出现歧义:比如分钟域的*/10是每小时0分、10分、20分...触发,而5/10是每小时5分、15分、25分...触发,两者效果不同。但在你当前的秒域配置场景下,两种写法没有任何差异,不需要额外修改。
内容的提问来源于stack exchange,提问作者user6604739
相关产品推荐
相关产品推荐

