ThreadLocal:实现的是通过线程绑定的方式传递参数

package com.learn.utils;import java.sql.Connection;
import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;public class MyDataSourceUtils {//获得Connection ----- 从连接池中获取private static ComboPooledDataSource dataSource = new ComboPooledDataSource();//创建ThreadLocalprivate static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();//开启事务public static void startTransaction() throws SQLException{Connection conn = getCurrentConnection();conn.setAutoCommit(false);}//获得当前线程上绑定的connpublic static Connection getCurrentConnection() throws SQLException{//从ThreadLocal寻找 当前线程是否有对应ConnectionConnection conn = tl.get();if(conn==null){//获得新的connectionconn = getConnection();//将conn资源绑定到ThreadLocal(map)上tl.set(conn);}return conn;}public static Connection getConnection() throws SQLException{return dataSource.getConnection();}//回滚事务public static void rollback() throws SQLException {getCurrentConnection().rollback();}//提交事务public static void commit() throws SQLException {Connection conn = getCurrentConnection();conn.commit();//将Connection从ThreadLocal中移除tl.remove();conn.close();}}

MyDataSourceUtils使用ThreadLocal对象相关推荐

  1. threadlocal存连接对象的目的_面试官:知道ThreadLocal嘛?谈谈你对它的理解?

    在java的多线程模块中,ThreadLocal是经常被提问到的一个知识点,提问的方式有很多种,可能是循序渐进也可能是就像我的题目那样,因此只有理解透彻了,不管怎么问,都能游刃有余. 这篇文章主要从以 ...

  2. threadlocal存连接对象的目的_终于懂了ThreadLocal,不再害怕面试官问了

    ThreadLocal解析 synchronized和ThreadLocal的区别: synchronized:以时间换空间,只提供一份变量,让不同的线程排队访问,失去了并发性,降低了程序效率,着重对 ...

  3. threadlocal存连接对象的目的_ThreadLocal 介绍

    概述 ThreadLocal 是 java 提供的一个方便对象在本线程内不同方法中传递和获取的类.用它定义的变量,仅在本线程中可见和维护,不受其他线程的影响,与其他线程相互隔离. 虽然在本线程不同方法 ...

  4. FastThreadLocal吞吐量居然是ThreadLocal的3倍

    目前关于FastThreadLocal的很多文章都有点老有点过时了(本文将澄清几个误区),很多文章关于FastThreadLocal介绍的也不全,希望本篇文章可以带你彻底理解FastThreadLoc ...

  5. 什么是ThreadLocal

    顾名思义它是local variable(线程局部变量).它的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,使每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突.从线 ...

  6. 为什么jdk源码推荐ThreadLocal使用static

    ThreadLocal是线程私有变量,本身是解决多线程环境线程安全,可以说单线程实际上没必要使用. 既然多线程环境本身不使用static,那么又怎么会线程不安全.所以这个问题本身并不是问题,只是有人没 ...

  7. threadlocal使用场景_深入剖析ThreadLocal

    点击上方 IT牧场 ,选择 置顶或者星标 技术干货每日送达 朋友们在遇到线程安全问题的时候,大多数情况下可能会使用synchronized关键字,每次只允许一个线程进入锁定的方法或代码块,这样就可以保 ...

  8. 全方位,多角度理解ThreadLocal

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://blog.csdn.net/zzg1229059735/article/details/82715741 本次 ...

  9. 一个ThreadLocal和面试官大战30个回合

    点击关注公众号,Java干货及时送达 开场 杭州某商务楼里,正发生着一起求职者和面试官的battle. 面试官:你先自我介绍一下. 安琪拉:面试官你好,我是草丛三婊,最强中单(妲己不服),草地摩托车车 ...

最新文章

  1. bug诞生记——隐蔽的指针偏移计算导致的数据错乱
  2. 6个快速优化回归测试套件的方法,你都知道吗?
  3. 跟互联力量学Asp.net MVC3-安装和创建
  4. Nginx负载均衡监控节点状态
  5. 【深度学习】2021年深度学习哪些方向比较新颖,处于上升期或者朝阳阶段,没那么饱和,比较有研究潜力?...
  6. 陷阱:C++模块之间的”直接依赖“和”间接依赖“与Makefile的撰写
  7. U-Boot如何向内核传递Flash的分区信息
  8. 开源特训营 - Lesson 6 - 如何提交一个合格的PR
  9. Spring、SpringMVC和SpringBoot之间的关系
  10. c语言实现文档中字符串的替换,C语言 16行代码实现字符串中指定字符串替换
  11. 任正非认为自己的成功没有秘诀
  12. Beyond Compare如何展开所有子文件夹
  13. 转:在windows中将tree命令加入git-bash中
  14. Eclipse安装WindowsBuilder失败的解决办法
  15. cad布局教程_10+篇CAD三维模型一键出工程图,你掌握了?
  16. [多线程]多线程使用QTimer
  17. SpringMVC基础入门
  18. 数学奥赛狂砍10题!Meta发布全新定理证明器:AI即将接管数学?
  19. HBuilder X问题记录
  20. linu修改open files无效_最简洁的批量修改文件名工具分享

热门文章

  1. mysql bin log日志
  2. angularjs组件之input mask
  3. 利用html的header下载文件
  4. 获得md5加密后的字符串
  5. i2c--insmod
  6. 弹出框页面中使用jquery.validate验证控件
  7. 聊聊jvm的-XX:MaxDirectMemorySize
  8. WebRTC通话质量调优:三个弱网模拟测试工具的使用与对比
  9. vue.js初识(一)
  10. diy一下devise的验证