cron 表达式0 0/10 * * * 与 0 */10 * * *的区别 (Drools / Java)

比眉伴天荒 2022-05-23 12:24 1404阅读 0赞

Questions-Drools

前提条件 框架: drools

前段时间使用drools内的cron表达式,发现配置每x分钟执行的时候。第一次执行时间,总是不太对。第二次的执行时间是正确的。

  1. cron 0 0/7 * * *
  2. # 启动时间 xx:40:00
  3. # 第一次执行时间 xx:42:00
  4. # 第二次执行时间 xx:49:00
  5. corn 0 */5 * * *
  6. # 启动时间 xx:40:00
  7. # 第一次执行时间 xx:45:00
  8. # 第二次执行时间 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表达式来进行完成。

发表评论

表情:
评论列表 (有 0 条评论,1404人围观)

还没有评论,来说两句吧...

相关阅读