java 线程的事物_SpringBoot多线程事务回滚

本文介绍了如何在SpringBoot中处理多线程的事务管理,特别是当其中一个线程出现错误时如何实现事务回滚。通过使用CountDownLatch和AtomicBoolean,确保线程间的同步,并利用PlatformTransactionManager来控制事务的提交和回滚。
摘要由CSDN通过智能技术生成

1 publicString test() {2 String result = "";3 CountDownLatch rollBackLatch = new CountDownLatch(1);4 CountDownLatch mainThreadLatch = new CountDownLatch(2);5 AtomicBoolean rollbackFlag = new AtomicBoolean(false);6 List> list = new ArrayList>();7 //线程有返回值

8 Future future =executor1(rollBackLatch, mainThreadLatch, rollbackFlag);9 list.add(future);10 //线程无返回值

11 executor2(rollBackLatch, mainThreadLatch, rollbackFlag);12 //主线程业务执行完毕 如果其他线程也执行完毕 且没有报异常 正在阻塞状态中 唤醒其他线程 提交所有的事务13 //如果其他线程或者主线程报错 则不会进入if 会触发回滚

14 if (!rollbackFlag.get()) {15 try{16 mainThreadLatch.await();17 rollBackLatch.countDown();18 for (Futuref : list)19 if (!"success".equals(f.get()))20 result = f.get() + "。";21 } catch (InterruptedException |ExecutionException e) {22 e.printStackTrace();23 }24 }25 returnresult;26 }27

28 @Autowired29 privatePlatformTransactionManager transactionManager;3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值