不建议直接使用Spring的@Async
不建议直接使用Spring的@Async
@Async 中关于线程池的使用部分在 AsyncExecutionInterceptor 中,在这个类中有一个 getDefaultExecutor 方法,当我们没有做过自定义线程池的时候,就会用 SimpleAsyncTaskExecutor 这个线程池。
|
SimpleAsyncTaskExecutor 这玩意坑很大,其实他并不是真的线程池,它是不会重用线程的,每次调用都会创建一个新的线程,也没有最大线程数设置。并发大的时候会产生严重的性能问题。
他的doExecute核心逻辑如下:
/** |
所以,我们应该自定义线程池来配合@Async使用,而不是直接就用默认的
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CYK's Blog!
评论
