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

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

java - 在spring中的事務中開啟多線程,怎么捕捉異?;貪L呢?

瀏覽:180日期: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方法上的事務控制的。你可以在子線程調(diào)用的方法上開啟新事務,進行回滾。

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

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

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

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

標簽: java
主站蜘蛛池模板: 91在线视频免费看 | 性巴克成人免费网站 | 国产精品网站在线观看 | 日本不卡在线视频 | 国产成人99久久亚洲综合精品 | www国产亚洲精品久久麻豆 | 欧美国产中文字幕 | 日韩成人午夜 | 精品视频在线一区 | 欧美色婷婷| 午夜探花在线观看 | 欧美一级淫片免费视频黄 | 小舞的淫辱日记(h)小说 | 特级片在线观看 | 欧美激情一区二区三区四区 | 思思久久久 | 岛国中文字幕 | 日本欧美国产在线 | 18色av| 男人的天堂久久久 | 中文字幕第一区综合 | 色婷婷九月 | 91精品一区二区三区四区 | 婷婷在线综合 | 国产免费成人 | 男人天堂网av | 成人在线视频网 | 在线看日韩av | 天堂网在线观看 | 国产精品免费一区 | 国产成人av一区二区三区在线观看 | 懂爱av| 久久久久久久网 | 婷婷丁香久久 | 超碰免费观看 | 亚洲少妇一区二区三区 | 毛片综合 | 男男野外做爰全过程69 | 国产成人精品综合久久久久99 | 色婷婷av一区二区三区之e本道 | www.久久久久 |