ThreadLocal&事务总结

本文深入探讨ThreadLocal在Java中的应用,如何实现线程间数据共享,以及事务的ACID特性,分析事务并发访问可能遇到的问题和不同隔离级别的解决方案。通过对MySQL和Oracle默认隔离级别的比较,阐述事务安全性和性能的权衡。
摘要由CSDN通过智能技术生成

ThreadLocal

案例介绍

在“事务传递参数版”中,我们必须修改方法的参数个数,传递链接,才可以完成整个事务操作。如果不传递参数,是否可以完成?在JDK中给我们提供了一个工具类:ThreadLocal,此类可以在一个线程中共享数据。

相关知识:ThreadLocal

java.lang.ThreadLocal 该类提供了线程局部 (thread-local) 变量,用于在当前线程中共享数据。
在这里插入图片描述

分析

在这里插入图片描述

实现

1.工具类JDBCUtils

//连接池
private static ComboPooledDataSource dataSource = new ComboPooledDataSource("baidu");
	//给当前线程绑定 连接
	private static ThreadLocal<Connection> local = new ThreadLocal<Connection>();
		
	/**
	 * 获得连接
	 * @return
	 */
	public static Connection getConnection(){
   
		try {
   
			//#1从当前线程中, 获得已经绑定的连接
			Connection conn = local.get();
			if(conn == null){
   
				//#2 第一次获得,绑定内容 – 从连接池获得
				conn = dataSource.getConnection();
				//#3 将连接存 ThreadLocal
				local.set(conn);
			}
			return conn; //获得连接
		} catch 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值