java 并发基础

ThreadLocal

  允许将每个线程与持有数值的对象关联在一起,提供get,set访问器,为每个使用它的线程维持一份单独的拷贝。所以,get总是返回由当前执行线程通过set设置的最新值。

  例通过ThreadLocal存储jdbc数据库连接使其成为线程安全的。

  

private static ThreadLocal<Connection> conn=new ThreadLocal<Connection>(){
        public  Connection initialValue(){
                return DriverManager.getConnection(DB_URL);
                }
    }
 public static Connection getConnection(){
    return conn.get();
}

  线程首次调用ThreadLocal.get方法时,会请求initialValue提供一个初始值。

  概念上来说,可以将ThreadLocal<T>看作map<Thread,T>,它存储了线程相关的值,不过事实上它并非这样实现的,与线程相关的值存储在线程对象自身中,线程终止后,这些值会被垃圾回收。

  

  相比全局变量,线程本地变量会降低可重用性,引入隐晦的类间耦合。

  

转载于:https://www.cnblogs.com/UalBlog/p/10594659.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值