@Scheduled实现复杂的corn表达式
创始人
2024-03-14 06:23:28
0

需求背景

21:30-05:10 每隔3分钟执行一次

corn表达式的几个符号意义

“?”字符:表示不确定的值
“,”字符:指定数个值
“-”字符:指定一个值的范围
“/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m
“L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X
“W”字符:指定离给定日期最近的工作日(周一到周五)
“#”字符:表示该月第几个周X。6#3表示该月第3个周五
————————————————
版权声明:本文为CSDN博主「新时代农民工James」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_48692664/article/details/121860360

解决思路

常规思路 根据小时21-5 3分钟一次去实现,

@Scheduled(corn = "0 3 21-5 * * ?")

这样写实现出来的效果是 21点到5点每三分钟执行一次
先考虑21:30,分钟肯定不是从0分钟开始的,我们需要设置一个分钟的起点,

@Scheduled(corn = "0 30/3 21-5 * * ?")

这样写出来的效果会发现是: 21点到5点,每个小时的第三十分钟开始 每三分钟执行一次
所以需要将两个时间段分开 这里就提到@Scheduled特性,支持多个@Scheduled在同一个任务,所以将任务分为 21:30-21:59 以及22:00 - 4:59,考虑到还有5:10,增加一个时间段 5:00-5:10

21:30-21-59

@Scheduled(corn = "0 30/3 21 * * ?")

22:00 - 4:59

@Scheduled(corn = "0 */3 22-4 * * ?")

5:00-5:10

@Scheduled(corn = "0 3/0-10 5 * * ?")

3/0-10

注意这个写法,指的是0-10分钟内,每3 执行一次

最终效果

Springboot 不支持22-4 只能分成 22-23 0-4

@Scheduled(cron = "0 30/3 21 * * ?")
@Scheduled(cron = "0 */3 22-23 * * ? ")
@Scheduled(cron = "0 */3 0-4 * * ? ")
@Scheduled(cron = "0 0-10/3 5 * * ? ")

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...