子線程異常拋出 及 主線程事務回滾


http://blog.csdn.net/mynameismt/article/details/51363120

多線程與事務回滾


業務模型期望的結果是這樣的,檢測子線程的異常情況,如果發生異常,主線程回滾,否則提交

大家都知道runnable有以下特點:

          1.業務處理出現checked exception必須在線程中捕獲處理不允許拋出,否則影響run函數的覆蓋

          2.如果線程拋出unchecked(runnable) exception,則線程終結,主線程不受影響

所以使用runnable,主線程壓根不知道子線程的情況,事務更無從談起。


所以使用Callable機制

兩種方法

1 使用異常

FutureTask   

public V get() throws InterruptedException, ExecutionException

主線程    調用  get   直接拋出異常觸發事務管理


2 使用返回

  1. if ("failed".equals(result)) {  
  2.     throw new RuntimeException();  
  3. }  
收到failed返回后,拋出異常觸發事務管理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM