本文主要是介绍Java中使用@Scheduled定时器操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在Java中使用@Scheduled定时器的几种种操作方式。
1、fixedRate
例:@Scheduled(fixedRate = 5000) //上一次开始执行时间点之后5秒再执行
2、fixedDelay
例:@Scheduled(fixedDelay = 5000) //上一次执行完毕时间点之后5秒再执行
3、cron
例:@Scheduled(cron = "0 0/1 9-21 * * ?")//每天早上9点-晚上21点间执行,每次执行间隔一分钟
着重讲一下cron:
Scheduled(cron="0 0 21 * * ?")
配置完整格式为: [秒] [分] [小时] [日] [月] [周] [年]
其中每个元素
可以是一个值(如6),
一个连续区间(9-12),
一个间隔时间(8-18/4)(/表示每隔4小时),
一个列表(1,3,5),
通配符。
由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置
附上一点代码示例:
@Component
@EnableAsync
public class ThirdOverTimePushTask {private Logger logger = LogManager.getLogger();@Autowiredprivate LawyerDontReceivingService lawyerDontReceivingService;//@Scheduled(fixedRate = 60000)//每隔一分钟执行一次@Scheduled(cron = "0 0/1 9-21 * * ?")//每天早上9点-晚上21点间执行,每次执行间隔一分钟public void run() {try {run(()-> {logger.info("开始查询超时未接单订单进行推送");lawyerDontReceivingService.getOverTimeOrderPushMessage();});}catch (RuntimeException e){logger.error(e.getMessage());}catch (Exception e){logger.error(e);}}public void run(Runnable runnable) {runnable.run();}
}
下边列一下常用的几种配置格式:
格式 | 描述 |
---|---|
0 0 10,14,16 * * ? | 每天上午10点,下午2点,4点 |
0 0/30 9-18 * * ? | 朝九晚六工作时间内每半小时 |
0 0 12 ? * WED | 表示每个星期三中午12点 |
0 0 12 * * ? | 每天中午12点触发 |
0 30 10 ? * * | 每天上午10:30触发 |
0 30 10 * * ? | 每天上午10:30触发 |
0 30 10 * * ? * | 每天上午10:30触发 |
0 30 10 * * ? 2022 | 2022年的每天上午10:30触发 |
0 * 14 * * ? | 在每天下午2点到下午2:59期间的每1分钟触发 |
0 0/5 14 * * ? | 在每天下午2点到下午2:55期间的每5分钟触发 |
0 “0/5 14,18 * * ? | 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 |
0 0-5 14 * * ? | 在每天下午2点到下午2:05期间的每1分钟触发 |
0 10,44 14 ? 3 WED | 每年三月的星期三的下午2:10和2:44触发 |
0 30 10 ? * MON-FRI | 周一至周五的上午10:30触发 |
0 30 10 15 * ? | 每月15日上午10:30触发 |
0 30 10 L * ? | 每月最后一日的上午10:30触发 |
0 30 10 ? * 6L | 每月的最后一个星期五上午10:30触发 |
0 30 10 ? * 6L 2022-2023 | 2022年至2023年的每月的最后一个星期五上午10:30触发 |
0 30 10 ? “* 6#3 | 每月的第三个星期五上午10:30触发 |
这篇关于Java中使用@Scheduled定时器操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!