如何在多线程中使用弹簧事务
2022-09-01 00:39:15
我有一个如下方法:
ClassA.java
@Transactional
public void methodA(){
ExecutorService executorService = Executors.newFixedThreadPool(4);
executorService.execute(new Runnable() {
public void run() {
classB.methodB();
}
});
}
ClassB.java
@Transactional
public void methodB(){
updateDB();
}
方法B可以很好地工作吗?根据我的理解,方法B将附加方法A的事务,如果方法A在方法B之前退出怎么办?我想只有方法A可以由事务提交。但是方法 B 不会提交,因为之前提交的事务。
我可以对方法B使用@Transactional(传播= Propagation.REQUIRES_NEW)吗?这可以让方法 B 有一个新的事务。但根据 spring 文档,方法 A 的事务会在调用方法 B 时暂停。我在这里感到非常困惑。
任何人都可以在这个问题上帮助我吗?提前致谢。