Questions-Drools
前提条件 框架: drools
前段时间使用drools
内的cron表达式,发现配置每x分钟执行的时候。第一次执行时间,总是不太对。第二次的执行时间是正确的。
cron 0 0/7 * * *
# 启动时间 xx:40:00
# 第一次执行时间 xx:42:00
# 第二次执行时间 xx:49:00
corn 0 */5 * * *
# 启动时间 xx:40:00
# 第一次执行时间 xx:45:00
# 第二次执行时间 xx:50:00
Solution
0 0/10 * * *
与0 */10 * * *
的差别在于什么地方。
在说这两者的差别之前,先说下各个字符代表的含义。0
代表从0分开始,*
代表任意字符,/
代表递增。
也就是说0 0/10 * * *
代表从0
分钟开始,每10分钟执行任务一次。0 */10 * * *
代表从任务启动开始每10分钟执行任务一次。有人会问,这不是一样的么?
答案是不一样的。因为起始的时间不一样。例如:从5:07
分钟的时候执行该任务第一种写法会在5:10
的时候进行执行,写法二会在5:17
进行执行。这就是两者的差别。
当然0 0/1 * * *
与0 */1 * * *
有时会被认为是同一种写法。
Reference
[1]. 关于SPRING定时器每隔1小时:0 0 */1 * * ? 和 0 0 0/1 * * ? 有区别吗
补充-2020-12-21
之前仍然尝试过如下几种情况:
-
Linux 本地crontab
-
Spring cron定时表达式
-
Java cron表达式
此上述三种情况下,0 0/10 * * *
与0 */10 * * *
是没有区别的。各位还请注意。 -
如果需要设置的为从
xx启动开始,每60秒触发一次
, 可以使用其他定时器, 设置时间间隔来进行完成。 -
如果需要设置的为从
xx开始, 每xx秒触发一次
, 就可以使用上述的cron表达式
来进行完成。