程序中若需要在某个时间循环执行某项任务,就可以使用@Scheduled定时器
源码如下:
@Scheduled(cron="0 0 21 * * ?") //每天晚上九点执行一次 21点
public void taskCycle() throws Exception{
System.out.println("############定时校验代金券过期任务开始执行");
}
@Scheduled(cron="0 0 21 * * ?")
配置完整格式为: [秒] [分] [小时] [日] [月] [周] [年]
其中每个元素 可以是一个值(如6),
由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?.
0 0 10,14,16 * * ? | 每天上午10点,下午2点,4点 |
---|---|
0 0/30 9-17 * * ? | 朝九晚五工作时间内每半小时 |
0 0 12 ? * | WED 表示每个星期三中午12点 |
“0 0 12 * * ?” | 每天中午12点触发 |
“0 15 10 ? * *” | 每天上午10:15触发 |
“0 15 10 * * ?” | 每天上午10:15触发 |
“0 15 10 * * ? *” | 每天上午10:15触发 |
“0 15 10 * * ? 2005” | 2005年的每天上午10:15触发 |
“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 15 10 ? * MON-FRI” | 周一至周五的上午10:15触发 |
“0 15 10 15 * ?” | 每月15日上午10:15触发 |
“0 15 10 L * ?” | 每月最后一日的上午10:15触发 |
“0 15 10 ? * 6L” | 每月的最后一个星期五上午10:15触发 |
“0 15 10 ? * 6L 2002-2005” | 2002年至2005年的每月的最后一个星期五上午10:15触发 |
"0 15 10 ? “* 6#3” | 每月的第三个星期五上午10:15触发 |
直接在方法上加上@Scheduled注解,
添加@EnableAsync和@Async注解
做如下配置,就可以实现了
@Configuration
@EnableScheduling
public class ScheduleConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor());
}
@Bean(destroyMethod="shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(2);
}
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持html5模板网。