SpringBoot定时任务
配置步骤:
1、Application启动类上添加@EnableScheduling注解启动定时。
2、使用@Component和@Scheduled启动定时任务
需要注意的是,Springboot默认的定时任务是单线程执行的,会导致定时任务互相影响。假设其中一个任务执行时间过长,会阻塞其他任务的执行,这个时候,可以选择配置多线程执行。
@Configuration
public class ScheduledConfig implements SchedulingConfigurer{
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(Executors.newScheduledThreadPool(3));
}
}
定时配置
固定时间间隔:@Scheduled(initialDelay = 2000, fixedRate = 1000)
固定时间延迟:@Scheduled(initialDelay = 2000, fixedDelay = 1000)
cron表达式:@Scheduled(cron = "0 0 * * * ?")
Cron表达式说明
Cron表达式格式,从左到右,空格分开,: 秒 分 小时 天 月 星期 年(可选)
秒的取值:0——59的整数
分的取值:0——59的整数
小时取值:0——23的整数
日期取值:1——31的整数
月份取值:1——12的整数
星期取值:1——7的整数
每个域除了上述的值,还可以包含下列特殊字符:
* :表示匹配该域的任意值,假设在Minutes使用*,表示每分钟触发。
,:表示列出枚举值,例如,在Minutes中使用10,20,30,表示在10、20、30分的时候触发。