如何在多线程中使用Spring事务
- 论坛
- 如何在多线程中使用Spring事务
7 浏览
如何在多线程中使用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文档,当它调用methodB时,methodA的事务将被挂起。我在这个问题上感到非常困惑。
有人可以帮我解决这个问题吗?提前谢谢。