亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

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

問題描述

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

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只能控制單線程事務(wù),所以子線程是不受add方法上的事務(wù)控制的。你可以在子線程調(diào)用的方法上開啟新事務(wù),進(jìn)行回滾。

開啟子線程調(diào)用受事務(wù)控制的方法:

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

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

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

標(biāo)簽: java
主站蜘蛛池模板: 欧美成在线播放 | 午夜在线免费视频 | 亚洲欧美国产日产综合不卡 | 日韩欧美综合在线二区三区 | 久久国产网站 | 日韩精品第1页 | 日韩做爰视频免费 | 欧美成人性色大片在线观看 | 久久国产欧美日韩高清专区 | 欧美videos另类极品 | 偷窥自拍有声 | 日韩毛片免费视频一级特黄 | 亚洲欧洲日韩国产 | 妞干网在线视频 | 99久久伊人一区二区yy5o99 | 亚欧成人中文字幕一区 | 免费特级黄毛片在线成人观看 | 免费污片在线观看 | 99热精品国产三级在线观看 | 99久久精品6在线播放 | 91久久国产视频 | 久cao在线香蕉69影院 | 亚洲综合日韩中文字幕v在线 | 国产精品免费播放 | 欧美做爰gif动态图一区二区 | 小明台湾成人永久免费看看 | 在线观看成年人视频 | 一级免费黄色片 | 亚洲成人在线观看视频 | 一级呦女专区毛片 | 亚洲黄色影院 | 国产精品麻豆入口 | 国产成人微拍精品 | 毛片在线看免费 | 一级做a爰片性色毛片小说 一级做a爰片性色毛片中国 | 国产曰批视频免费观看完 | 免费www xxx | a一级免费| 在线观看黄色影视 | xxxx色 | 一级日本特黄毛片视频 |