并发面试题--什么是ThreadLocal本地局部变量?

本文作者:黄海燕,叩丁狼高级讲师。原创文章,转载请注明出处。

ThreadLocal是一个本地线程副本变量工具类,可以理解为线程的本地变量。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,实现了线程的数据隔离,是线程独有的所以本身就是线程安全,特别适用于各个线程依赖多个不同的变量值完成操作的场景。如:数据库连接、Session管理等。

##1.1 ThreadLocal简单使用
###1.1.1 ThreadLocal常用方法:
image.png
###1.1.2 需求:简易数据库连接池
因为数据库连接Connection的创建和消耗非常浪费资源,所以我们就选择了数据库连接池,以空间换时间,事前创建一定数量的数据库连接,存放到一个池子中,有需要的时候拿来用,用完放回放回到池子中。并且在多线程中很可能一个线程在使用Connection进行数据库操作,而另外一个线程调用同一个Connection的close方法关闭链接。

public class DBUtil {
    //数据库连接池
    private static DataSource source;
    //为了保证同一个线程使用的连接操作和释放都是同一个Connection,需要使用ThreadLocal
    private static ThreadLocal<Connection> local = new ThreadLocal<Connection>();
    private static LinkedList<Connection> pool = new LinkedList<Connection>();
    pr
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值