spring框架中自定义 TaskScheduler 和ThreadPoolTaskExecutor

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 条评论) “”
   
验证码:

相关文章

推荐文章