SpringBoot定时任务入门
- JAVA
- 1天前
- 8热度
- 0评论
SpringBoot定时任务就两个注解,加上后,随着SpringBoot启动,定时任务会自动运行
可以通过在定时任务中打印log观察定时任务的运行。
1. 主函数配置注解
@SpringBootApplication
@EnableAsync // 开启异步
@EnableScheduling // 开启定时任务
public class DataSyncApplication {
public static void main(String[] args) {
SpringApplication.run(DataSyncApplication.class, args);
}
}
2. 单线程阻塞 - 定时任务
- crontab表达式学习[见cron章节]
- 默认单个线程,阻塞方式
@Scheduled(cron = "0/1 * * * * ?")
public void realDataSyncScheduled1(){
// doSth
}
3. 异步 - 定时任务
若定时任务内执行时间太长,将会影响下一次执行的启动
比如执行需要用5秒,设置的每秒执行一次,实际上就会5秒执行一次
因为定时任务默认是阻塞方式,这时需要加上异步标志
@Async
@Scheduled(cron = "0/1 * * * * ?")
public void realDataSyncScheduled1(){
// doSth
}
这时就会单线程异步执行,只要单核没用满,就不会出现影响下一次定时任务执行的情况
Async用的默认线程池策略,这个不太好,最好自定义多线程异步定时任务
4. 自定义多线程异步 - 定时任务
若任务是计算密集操作,此时异步也不管用,因为单核只能用1个CPU,这个CPU被用满了就只能等了
所以需要开启多线程异步
需要配置一下Async的线程池,默认也会给,一般最好自己配
