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時掛起。我覺得這裏很混亂。
任何人都可以幫助我解決這個問題嗎?提前致謝。
你究竟想要做什麼? –