Quartz Scheduler中Cron表达式*/10与0/10的差异解析
Quartz中两个10秒间隔Cron表达式的区别解析
先明确Quartz Cron表达式的秒位规则:秒位的x/y格式表示「从x秒开始,每隔y秒触发一次」;*/y则是「从当前时间之后最近的y的倍数秒开始,每隔y秒触发一次」。
1. 0/10 * * * * ? 的行为
这个表达式的秒位是0/10,意思是从每个分钟的0秒开始,每10秒触发一次。不管你在什么时间启动任务,第一次触发都会等到下一分钟的0秒,之后严格按照0、10、20、30、40、50秒的间隔触发。
比如你在16:32:47启动任务,触发时间会是:16:33:00、16:33:10、16:33:20、16:33:30、16:33:40、16:33:50、16:34:00...完全符合你举的例子。
2. */10 * * * * ? 的行为
这个表达式的秒位是*/10,规则是找到当前时间之后最近的10的倍数秒作为第一次触发时间,之后每10秒触发一次。它不会刻意对齐分钟的0秒,而是基于启动时间的秒数来计算起始点。
还是以16:32:47启动为例:当前秒是47,最近的10的倍数秒是50,所以第一次触发是16:32:50,之后依次是16:33:00、16:33:10、16:33:20...后续的间隔和0/10一致,但第一次触发提前到了当前分钟的50秒,而不是等下一分钟的0秒。
核心区别总结
0/10 * * * * ?:触发秒数固定为0、10、20、30、40、50,严格对齐分钟的起始点。*/10 * * * * ?:触发秒数的起始点由任务启动时间决定,第一次触发是启动时间后最近的10倍数秒,后续保持10秒间隔。
内容的提问来源于stack exchange,提问作者Pavel Foltyn
相关产品推荐
相关产品推荐

