目录
12.1 定时任务
12.1.1 通用实现方法
定时任务执行方式可分为单线程(串行)和多线程(并行)。在Spring Boot下开发定时任务需要在启动类上增加一个@EnableScheduling注解开启定时任务功能。常见的3种定时任务的实现方式:
1.使用Java自带的java.util.Timer类
2.使用Quartz
3.使用Spring框架自带的Schedule模块
12.1.2 静态定时任务
在Spring Boot中实现一个静态定时任务:
1.使用@Component注解标注这个类,然后在其中需要定时执行的方法上添加@Schedule注解
(1)@Scheduled(fixedRate=5000):每隔5秒执行一次
(2)@Scheduled(fixedRate=3000):每隔3秒执行一次
(3)@Scheduled(cron="0/10 * * * * ?"):按照cron表达式规则执行
2.在Spring Boot启动类上添加@EnableScheduling注解,启用Spring Schedule定时调度功能
12.1.3 Cron简介
见:https://blog.csdn.net/storyteller_qzx/article/details/109603829
12.1.4 动态定时任务
1.数据库初始化数据
2.从数据库中读取cron表达式值
3.ScheduleConfigurer接口:任务调度的配置接口,实现其中的configureTasks()方法可以实现任务的配置
12.1.5 多线程执行任务
1.在SchedulingConfigurer接口的configureTasks方法中添加线程池(taskRegister.setScheduler(Executors.newScheduledThreadPool(10)))
2.在configureTasks方法中添加多任务(taskRegister.setScheduler(Executors.newScheduledThreadPool(10)))
12.2 开发任务调度服务
12.2.1 同步与异步
同步:按代码顺序依次执行,每一个程序必须等上一个程序执行结束之后才能执行。
异步:不等待前一个程序执行结束就开始执行之后的程序,异步不用阻塞当前线程来等待处理完成,它允许后续操作,直至其他线程将处理完成并回调此线程。
12.2.3 异步任务执行
1.编写AsyncTask类:在方法前面加上一个@Async注解将同步函数变为异步函数
2.自定义线程池
3.启用@EnableAsync:在Spring Boot的入口类上配置@EnableAsync,@Async注解才能生效