正确使用@Async,避免踩坑
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正确使用@Async,避免踩坑相关的知识,希望对你有一定的参考价值。
参考技术A功能描述
@Async是Spring提供的使方法异步的注解
使用方法
代码示例
已实现的TaskExecutor线程池
@Async依赖线程池,当我们未指定线程池@Async会如何选择呢?
1. 当系统未配置任何线程池时
SpringBoot会默认添加一个coreSize=8的 ThreadPoolTaskExecutor 无界线程池,名称applicationTaskExecutor。
2. 当只配置了一个TaskExecutor线程池时
使用此线程池
3. 当只配置了一个线程池,但不是TaskExecutor线程池时
使用 SimpleAsyncTaskExecutor 线和池
4. 当有多个TaskExecutor线程池时
默认使用 SimpleAsyncTaskExecutor 线程池,如果指定就使用指定的线程池(即使不是TaskExecutor类型的线程池也可以)
注意: SimpleAsyncTaskExecutor 不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。强烈建议开发时指定线程池的名称,避免创建多个TaskExecutor实例后,使用 SimpleAsyncTaskExecutor 线和池的情况发生
以上是关于正确使用@Async,避免踩坑的主要内容,如果未能解决你的问题,请参考以下文章
kotlin协程async await的异常踩坑以及异常处理的正确姿势
kotlin协程async await的异常踩坑以及异常处理的正确姿势
kotlin协程async await的异常踩坑以及异常处理的正确姿势