java中定时任务@EnableScheduling:
设置:每20秒执行一次
jb.testJob=*/20 * * * * ?
java代码:
log.info("==============定时任务开始==============");
//暂停2分钟
Thread.sleep(120000);
log.info("==============定时任务结束==============");
结果展示:
2021-06-10 14:38:40,024 INFO [pool-2-thread-1] com.TestTimerJob[topNType 45]: ==============定时任务开始==============
2021-06-10 14:40:40,037 INFO [pool-2-thread-1] com.TestTimerJob[topNType 48]: ==============定时任务结束==============
2021-06-10 14:41:00,006 INFO [pool-2-thread-1] com.TestTimerJob[topNType 45]: ==============定时任务开始==============
2021-06-10 14:43:00,033 INFO [pool-2-thread-1] com.TestTimerJob[topNType 48]: ==============定时任务结束==============
2021-06-10 14:43:20,010 INFO [pool-2-thread-1] com.TestTimerJob[topNType 45]: ==============定时任务开始==============
总结:定时任务设定的每20秒启动一次,若上一个任务运行的时间超过了执行频率20秒,这个20秒的计时时间标准是以上次任务执行完成之后开始计时。
若上一个任务运行的时间低于执行频率20秒,则下一次任务的启动时间是以第一次任务的启动时间为准。
结果展示:
2021-06-10 17:13:20,013 INFO [pool-2-thread-1] com.TestTimerJob[topNType 48]: ==============定时任务开始==============
2021-06-10 17:13:30,030 INFO [pool-2-thread-1] com.TestTimerJob[topNType 51]: ==============定时任务结束==============
2021-06-10 17:13:40,012 INFO [pool-2-thread-1] com.TestTimerJob[topNType 48]: ==============定时任务开始==============
2021-06-10 17:13:50,026 INFO [pool-2-thread-1] com.TestTimerJob[topNType 51]: ==============定时任务结束==============
2021-06-10 17:14:00,003 INFO [pool-2-thread-1] com.TestTimerJob[topNType 48]: ==============定时任务开始==============
2021-06-10 17:14:10,012 INFO [pool-2-thread-1] com.TestTimerJob[topNType 51]: ==============定时任务结束==============
2021-06-10 17:14:20,005 INFO [pool-2-thread-1] com.TestTimerJob[topNType 48]: ==============定时任务开始==============
2021-06-10 17:14:30,019 INFO [pool-2-thread-1] com.TestTimerJob[topNType 51]: ==============定时任务结束==============