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

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

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

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

問(wèn)題描述

假設(shè)我在某個(gè)事務(wù)中使用2個(gè)線程來(lái)加快處理速度,那么如果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);}

問(wèn)題解答

回答1:

@Transactional只能控制單線程事務(wù),所以子線程是不受add方法上的事務(wù)控制的。你可以在子線程調(diào)用的方法上開(kāi)啟新事務(wù),進(jìn)行回滾。

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

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

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

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

標(biāo)簽: java
主站蜘蛛池模板: 4四虎44虎www在线影院麻豆 | 欧美三级做爰在线 | 玖玖玖精品视频免费播放 | 91小视频在线观看免费版高清 | 精品久久久久久中文字幕一区 | 成年人免费观看视频网站 | 免费国产一区二区三区 | 国产精品日产三级在线观看 | 99精品在线观看视频 | 亚洲欧美日韩国产专区一区 | 狠狠做久久深爱婷婷97动漫 | 日本欧美一区二区 | 新版天堂中文资源8在线 | 中文字幕一区在线播放 | 欧美日韩精品一区二区三区不卡 | 国产成人精品高清在线 | 国产老鸭窝毛片一区二区 | 男女猛烈无遮掩免费视频 | 成人黄页网站 | 韩国免费网站成人 | 亚洲小视频在线 | 久爱www免费人成福利播放 | 成年人在线观看视频免费 | 性久久久久久久久 | 高清色黄毛片一级毛片 | 亚洲成色在线 | 久久99久久精品视频 | 亚洲欧美一区二区三区在线观看 | 亚洲精品一区国产二区 | 理论在线看 | 亚洲人成综合在线播放 | 国产精品国产三级国产专播 | 日本色哟哟 | 男吃女下面刺激视频免费 | 日韩国产欧美视频 | 欧美成人免费xxx大片 | 91视频99 | 男女做性免费视频软件 | 亚洲精品久久久久久久777 | 女人张开腿给男人桶爽免费 | 日本高清在线中文字幕网 |