Spring的事务我有如下的方法:如何使用多线程
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();
}
中的methodB可以很好地工作?根据我的理解,methodB将附加methodA的事务,如果methodA在methodB之前退出,该怎么办?我想只有methodA可以被交易提交。但methodB不会提交,因为之前提交的事务。
我可以在methodB中使用@Transactional(propagation = Propagation.REQUIRES_NEW)。这可以让methodB有一个新的事务。但根据spring doc的说法,methodA的调用会在调用methodB时挂起。我觉得这里很混乱。
任何人都可以帮助我解决这个问题吗?提前致谢。
你究竟想要做什么? –