博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ThreadLocal 解决多线程程序的并发问题+事务处理
阅读量:5158 次
发布时间:2019-06-13

本文共 2222 字,大约阅读时间需要 7 分钟。

ThreadLocal 本地线程变量:

private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();

  tl.get():获取的就是当前线程中map{tl:conn}中的conn
  tl.set(conn):向当前线程中的map中保存一个元素{tl:conn}
  tl.remove():从当前线程中的map移除key为tl的元素
  initialValue():当调用get()获取当前线程的map中元素时,如果不存在,则调用该方法创建一个,并保存到map中

 

 

1 import java.sql.Connection; 2 import java.sql.SQLException; 3  4 public class TranManager { 5     private static ThreadLocal
tl= 6 new ThreadLocal
(){ 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 }

 

转载于:https://www.cnblogs.com/pxffly/p/7622216.html

你可能感兴趣的文章
跨域问题整理
查看>>
[Linux]文件浏览
查看>>
64位主机64位oracle下装32位客户端ODAC(NFPACS版)
查看>>
获取国内随机IP的函数
查看>>
今天第一次写博客
查看>>
江城子·己亥年戊辰月丁丑日话凄凉
查看>>
IP V4 和 IP V6 初识
查看>>
Spring Mvc模式下Jquery Ajax 与后台交互操作
查看>>
(转)matlab练习程序(HOG方向梯度直方图)
查看>>
『Raid 平面最近点对』
查看>>
【ADO.NET基础-数据加密】第一篇(加密解密篇)
查看>>
C语言基础小结(一)
查看>>
STL中的优先级队列priority_queue
查看>>
UE4 使用UGM制作血条
查看>>
浏览器对属性兼容性支持力度查询网址
查看>>
OO学习总结与体会
查看>>
虚拟机长时间不关造成的问题
查看>>
校门外的树2 contest 树状数组练习 T4
查看>>
面试整理:Python基础
查看>>
Python核心编程——多线程threading和队列
查看>>