@Async与@Transactional同时使用线程堵塞问题


 

一个循环、分别调用TTTT、YYYY方法; 两个方法分别睡眠!我开了50个线程;按理说两个方法都应该一瞬间打印50次、但是现象如下:


加事务注解的话;会堵塞(我大概猜测是代理类的问题?技术有限、不明白其中为什么)只打印8个线程、正好是我的cpu线程数;
 

当我放开事务注解后、就打印正常了

本地测试效果和你的不同,我本地测试和事务注解无关,
async的aop处理类是AnnotationAsyncExecutionInterceptor,没有太多业务逻辑,注解线程池submit

img


img


事务的处理类则是org.springframework.transaction.interceptor.TransactionInterceptor,本质上只是用当前线程和事务做绑定,它甚至都拿不到线程池