成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

多線程事務(wù)回滾

stackfing / 1305人閱讀

摘要:最近開發(fā),有地方需要用到多線程,每個(gè)線程里面處理多個(gè)方法,過程中遇到了一個(gè)問題,我們使用平時(shí)的注解,就是當(dāng)前一個(gè)方法執(zhí)行完成比如插入操作,后一個(gè)方法是不會(huì)事務(wù)回滾的。

最近開發(fā),有地方需要用到多線程,每個(gè)線程里面處理多個(gè)方法,過程中遇到了一個(gè)問題,我們使用平時(shí)的@Transactional注解,就是當(dāng)前一個(gè)方法執(zhí)行完成(比如插入操作),后一個(gè)方法是不會(huì)事務(wù)回滾的。當(dāng)時(shí)覺得很不可思議,后來經(jīng)過半天時(shí)間,終于挖出原因,并成功解決。
我這里先說明原因:多線程底層連接數(shù)據(jù)庫(kù)的時(shí)候,時(shí)使用的線程變量(TheadLocal),所以,開多少線程理論上就會(huì)建立多少個(gè)連接,每個(gè)線程有自己的連接,事務(wù)肯定不是同一個(gè)了。
解決辦法:我強(qiáng)制手動(dòng)把每個(gè)線程的事務(wù)狀態(tài)放到一個(gè)同步集合里面。然后如果有單個(gè)異常,循環(huán)回滾每個(gè)線程。
代碼如下:

 //先在開啟多線程外面,定義一個(gè)同步集合:
 List transactionStatuses = Collections.synchronizedList(new ArrayList());
 //開啟多線程
 executorService.execute(new Runnable() {
          @Override
          public void run() {
          DefaultTransactionDefinition def = new DefaultTransactionDefinition();
              def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // 事物隔離級(jí)別,開啟新事務(wù),這樣會(huì)比較安全些。
              TransactionStatus status = transactionManager.getTransaction(def); // 獲得事務(wù)狀態(tài)
              transactionStatuses.add(status);
              try{
                  //邏輯1
                  ...
                  //邏輯2
                  ...
              
              }catch(Exception e){
              
              }
          
          }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/69581.html

相關(guān)文章

  • 事務(wù)線程的坑及調(diào)優(yōu)Tips

    摘要:起因及介紹在處理原始對(duì)賬文件的時(shí)候,我將數(shù)據(jù)歸類后批量存入相應(yīng)的表中。結(jié)論事務(wù)只能管著開啟事務(wù)的線程,其他子線程出了問題都感知不到,所以在多線程環(huán)境操作要慎重。高頻容易搞死服務(wù)器,低頻會(huì)阻塞自身程序。重試次數(shù)和超時(shí)時(shí)間根據(jù)業(yè)務(wù)情況設(shè)置。 起因及介紹 在處理原始對(duì)賬文件的時(shí)候,我將數(shù)據(jù)歸類后批量存入相應(yīng)的表中。在持久化的時(shí)候,用了parallelStream(),想著同時(shí)存入很多表這樣可...

    wums 評(píng)論0 收藏0
  • 面試分享:最全Spring事務(wù)面試考點(diǎn)整理

    摘要:和事務(wù)的關(guān)系關(guān)系型數(shù)據(jù)庫(kù)某些消息隊(duì)列等產(chǎn)品或中間件稱為事務(wù)性資源,因?yàn)樗鼈儽旧碇С质聞?wù),也能夠處理事務(wù)。事務(wù)的傳播特性,,,,,,強(qiáng)制要求要有一個(gè)物理事務(wù)。外圍事務(wù)不會(huì)被內(nèi)部事務(wù)的回滾狀態(tài)影響。不支持當(dāng)前事務(wù)。 Spring和事務(wù)的關(guān)系 關(guān)系型數(shù)據(jù)庫(kù)、某些消息隊(duì)列等產(chǎn)品或中間件稱為事務(wù)性資源,因?yàn)樗鼈儽旧碇С质聞?wù),也能夠處理事務(wù)。 Spring很顯然不是事務(wù)性資源,但是它可...

    graf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<