1. 程式人生 > >ThreadLocal 解決多線程程序的並發問題+事務處理

ThreadLocal 解決多線程程序的並發問題+事務處理

{} cep 程序管理 sta cte read nag lease 管理

 1 import java.sql.Connection;
 2 import java.sql.SQLException;
 3 
 4 public class TranManager {
 5     private static ThreadLocal<Connection> tl=
 6                     new ThreadLocal<Connection>(){
 7         /**
 8          * 內部方法 
 9          * 返回回該線程局部變量的初始值
10          * 初始化線程,每次get()或者set(object)的時候會被調用。
11 */ 12 protected Connection initialValue() { 13 try { 14 return DaoUtils.getConn(); 15 } catch (Exception e) { 16 e.printStackTrace(); 17 return null; 18 } 19 } 20 }; 21 private TranManager(){}
22 public static Connection getConn(){ 23 return tl.get(); 24 } 25 /** 26 * @return 開啟手動提交事務, 27 * @false: 將sql命令交給應用程序管理 28 */ 29 public static void startTran(){ 30 try { 31 tl.get().setAutoCommit(false); 32 } catch (SQLException e) {
33 e.printStackTrace(); 34 } 35 } 36 /** 37 * @return 回滾 38 */ 39 public static void rollbackTran(){ 40 try { 41 tl.get().rollback(); 42 } catch (SQLException e) { 43 e.printStackTrace(); 44 } 45 } 46 /** 47 * @return 執行 48 */ 49 public static void commitTran(){ 50 try { 51 tl.get().commit(); 52 } catch (SQLException e) { 53 e.printStackTrace(); 54 } 55 } 56 /** 57 * @return 關閉 58 */ 59 public static void release(){ 60 try { 61 tl.get().close(); 62 tl.remove();//map{tl:conn} 63 } catch (SQLException e) { 64 e.printStackTrace(); 65 } 66 } 67 /*public void rollbackTran(Savepoint sp){ 68 try { 69 conn.rollback(sp); 70 conn.commit(); 71 } catch (SQLException e) { 72 e.printStackTrace(); 73 } 74 }*/ 75 }

ThreadLocal 解決多線程程序的並發問題+事務處理