色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

java - 在spring中的事務中開啟多線程,怎么捕捉異常回滾呢?

瀏覽:79日期:2023-11-05 14:41:05

問題描述

假設我在某個事務中使用2個線程來加快處理速度,那么如果userDao.addOrg()方法拋出了RuntimeException異常,那么事務不會回滾,也捕獲不到錯誤,那應該怎么做才對呢?

ExecutorService executorService = Executors.newCachedThreadPool();@Transactional(rollbackFor=Throwable.class)public void add(){CountDownLatch cdl = new CountDownLatch(2);executorService.submit(new Runnable() {public void run() { userDao.addOrg(); //拋出RuntimeException異常cdl.countDown(); }});executorService.submit(new Runnable() {public void run() { userDao.addSystem(); cdl.countDown(); }});cdl.wait(10,TimeUnit.SECONDS);}

問題解答

回答1:

@Transactional只能控制單線程事務,所以子線程是不受add方法上的事務控制的。你可以在子線程調用的方法上開啟新事務,進行回滾。

開啟子線程調用受事務控制的方法:

executorService.submit(new Runnable() {public void run() { addOperation.addMethod(); }});

@Componentclass AddOperation{ @Transactional public addMethod(){ userDao.addOrg(); //拋出RuntimeException異常 cdl.countDown(); }}

注意,@Transactional是通過proxy實現的,所以addMethod要置于新類AddOperation中,不能放到add方法所在的類。

標簽: java
主站蜘蛛池模板: 国产成人亚洲精品一区二区在线看 | 国产成人综合91香蕉 | 欧美一区二区三区久久久人妖 | 一区二区在线播放福利视频 | 国产欧美日韩亚洲精品区2345 | 国产免费高清福利拍拍拍 | 日韩城人视频 | 成年人免费看视频 | 一级特黄aaa大片在线观看 | 最新亚洲人成网站在线影院 | 手机免费看毛片 | 手机在线黄色网址 | www.99精品视频在线播放 | aaa级精品久久久国产片 | 久久精品国产99久久 | 三级视频网站在线观看 | 成人免费网站视频 | 免费看一级毛片欧美 | 免费看一级欧美毛片视频 | 亚洲视频日韩 | 免费一级毛片麻豆精品 | 一个人看的www片免费视频中文 | 亚洲高清免费在线观看 | 美美女下面被cao爽 美女131爽爽爽做爰中文视频 | 久草在在线视频 | 一级午夜a毛片免费视频 | 国产精品无圣光一区二区 | 欧美日韩一区二区高清视 | a级毛片免费高清毛片视频 a级毛片免费高清视频 | 欧美国产大片 | 国产50页| 澳门一级毛片手机在线看 | 97精品国产91久久久久久久 | 欧美日韩高清在线观看一区二区 | 国产一区二区中文字幕 | 欧美黄视频网站 | 国产亚洲欧美久久精品 | 全国最大色成免费网站 | 久久久夜间小视频 | 精品一区二区三区视频 | 亚洲欧美另类视频 |