SpringBoot2.6 多线程定时异步任务Scheduled
1、主要方法介绍:
1)ConditionalOnProperty("schedule.enable") 根据nacos的yml配置schedule.enable动态开关定时任务类是否生效
2)Configuration 表明这是个配置类。
3)EnableAsync 开启异步的定时任务调度
4)EnableScheduling 表明启用Spring的定时任务调度功能。
5)Async异步执行方法
6)schedule.corn:* * * * * ?:yml 文件中的配置内容,如果没有配置则会执行默认值 * * * * * ?
@ConditionalOnProperty("schedule.enable")
@Configuration
@EnableAsync
@EnableScheduling
public class MyScheduleConfig {
private final AtomicInteger counts = new AtomicInteger();
@Async
@Scheduled(cron = "${schedule.corn:* * * * * ?}")
public void printLog() {
System.out.println("[定时任务第 {"+ LocalDateTime.now()+"} 次执行]" + counts.incrementAndGet());
}
}
spring:
task:
execution: #定时任务异步执行器
thread-name-prefix: asynctask- #线程池的线程名的前缀,默认为 task-
pool:
max-size: 20 #最大线程数,线程池最大的线程数,只有在缓冲队列满了之后,才会申请超过核心线程数的线程。默认为 Integer.MAX_VALUE
queue-capacity: 200 #缓冲队列大小,用来缓冲执行任务的队列的大小。默认为 Integer.MAX_VALUE
shutdown:
await-termination: true #应用关闭时,是否等待定时任务执行完成。默认为 false ,建议设置为 true
schedule:
enable: true #是否启用
#停用: '-',启用:'0 22 15 * * ?'
corn: '0/5 * * * * ?'
2、@Scheduled 注解:
fixedRate:隔指定时间调用一次,不管任务是否执行完;
fixedDelay:任务执行完后隔指定时间再调用;
cron: 按表达式执行,可以通过工具网站来快速生成 https://cron.qqe2.com/
以上三个属性只能选择一个
当需要停止定时任务时可以通过修改配置文件中 cron 的值为 - 停止定时任务。
浙公网安备 33010602011771号