1、spring框架中的ThreadPoolTaskExecutor只是对jdk线程池ThreadPoolExecutor的包装
自定义 TaskScheduler 线程池可以通过为 spring 提供配置过的 TaskScheduler 的 bean 来覆盖默认的单线程配置。TaskScheduler 是一个接口,其实现类 ThreadPoolTaskScheduler 才是我们通常使用的目标,实现 SchedulingConfigurer 接口就能对其进行配置
2、创建配置类
配置类
3、注入ThreadPoolTaskExecutor对象
service中注入
4、在需要执行异步任务时我们将Executor作为参数传递给supplyAsync() 。现在,传递给supplyAsync() 的Supplier将由给定的Executor执行,而不是由ForkJoinPool.commonPool() 执行。
执行异步任务时
补充:
(1)方法supplyAsync()完成在ForkJoinPool.commonPool()或给定的Executor中异步运行的任务。
(2)如果与whenComplete一起使用,返回方法supplyAsync()结果和异常,可以对结果和异常再次处理。
(3)如果与thenApply一起使用,将方法supplyAsync()的结果作为参数,进行下一步处理。
5、springboot启动类中添加注解
@EnableAsync 开启多线程异布任务 @EnableScheduling 开启定时任务
6、service业务方法上添加注解
@Async("taskScheduler") 允许并发@Scheduled(cron="01 00 00 * * ? ") 每天凌晨 00:00:01 时运行
7、service层代码实例
留言与评论(共有 0 条评论) “” |