Spring定时器Cron表达式跨小时处理

平时使用Spring定时器还是蛮频繁的,一般都是秒级,分钟级

比如说每十秒一次触发

@Scheduled(cron = "0/10 * * * * ?")

运行结果

每二十分钟一次触发

@Scheduled(cron = "0 0/20 * * * ?")

运行结果

 

看起来都是没问题的,很正常

但如果变成四十分钟一次呢

@Scheduled(cron = "0 0/40 * * * ?")

运行结果就会变成这样

可以看到周期不完全是四十分钟,还有二十分钟的

每个周期不够的没有顺延到下一个周期

所以要换一种写法,比较笨的写法,但是可以满足每四十分钟触发一次的要求

需要写两个定时器

@Scheduled(cron = "0 20 1,3,5,7,9,11,13,15,17,19,21,23 * * ?")
@Scheduled(cron = "0 0,40 0/2 * * ?")

这样的话就可以正常运行了

运行结果

这两个结果拼起来,就是对的了

猜你喜欢

转载自blog.csdn.net/weixin_42559574/article/details/128574089