午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

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

瀏覽:171日期: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
主站蜘蛛池模板: 国产成人精品久久二区二区 | 久操视频网站 | 亚洲一区二区在线免费 | 成人综合网址 | 欧美少妇在线观看 | 欧美国产中文字幕 | 成人高清在线视频 | 99婷婷 | 久久中国 | 精品国产一区二区三区在线观看 | 一级特黄特色的免费大片视频 | 三级全黄的视频 | 国产精品久久久久久久成人午夜 | 国产极品国产极品 | 在线看黄网 | 亚洲第一页在线 | 国产视频在线观看视频 | 伊人三级 | 日韩精品一二三四 | 日本视频网 | 青青草在线播放 | 欧美综合视频在线 | 国产极品网站 | 日本成人在线免费 | 精品久久久久久亚洲精品 | 手机看片日韩国产 | 天天躁日日躁狠狠躁喷水 | 黄色动漫在线免费观看 | 一区二区国产精品视频 | 91操视频 | 中文字幕精品在线观看 | 99riav1国产精品视频 | 日日摸日日| 欧美bbxxx| 91免费在线视频 | 在线观看黄色av网站 | 久草一区二区 | 蜜桃91丨九色丨蝌蚪91桃色 | 中文字幕 视频一区 | 超碰66| 色综合久久88色综合天天 |