SpringBoot 异步多线程配置

SpringBoot 的异步、多线程配置

yml 配置

配置类进行配置

项目里有一些业务场景比较独立,需要异步进行操作,比如发邮件、发短信、不需要实时结果的复杂计算,与主线程无关。可以使这些方法异步进行,不影响主程序。

SpringBoot 使用@EnableSync 开启多线程,也可以通过yml文件进行配置。

yml 配置

可以在Yml 文件里进行配置

1spring:

2 task:

3  execution:

4          pool.core-size: 10 # 核心线程数,默认为8

5          queue-capacity: 10 # 队列容量,默认为无限大

6          max-size: 10 # 最大线程数,默认为无限大

然后在启动类上加上注解@EnableAsync,使用的方法上加上@Async

配置类进行配置

也可以通过异步配置,重写AsyncConfigurer里的getAsyncExecutor()方法,配置文件上加上注解@EnableAsync

1 /**

2 * 异步 多线程配置

3 */

4 @Configuration

5 @EnableAsync

6 public class AsyncConfiguration implements AsyncConfigurer {


8   核心线程数量

9   @Value("${my-thread-pool.core-pool-size:10}")

10    private Integer corePoolSize;

11   最大线程数量

12    @Value("${my-thread-pool.max-pool-size:100}")

13    private Integer maxPoolSize;

14    最大线程池缓存队列数量

15    @Value("${my-thread-pool.queue-capacity:100}")

16    private Integer queueCapacity;

17    @Override

18    public Executor getAsyncExecutor() {

19        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();

20        executor.setCorePoolSize(corePoolSize);

21        executor.setMaxPoolSize(maxPoolSize);

22        executor.setQueueCapacity(queueCapacity);

23        executor.setThreadNamePrefix("zyw-ExecutorThread-");

24        executor.initialize();

25        return executor;

26    }

27    @Override

28    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {

29        return new SimpleAsyncUncaughtExceptionHandler();

30    }

31}

双喜鸟

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容