我对ThreadLocal的理解

网上转了一圈,发现很多对ThreadLocal讲解的文章都有些混乱,讲的不够清楚。
这边说一说我自己的理解。
网上有些人将ThreadLocal和synchronized进行比较,其实这两者没什么关系,使用场景也完全不同。
ThreadLocal说白了,只是为了在多线程环境下方便变量的访问和传递罢了。这也就是为什么ThreadLocal的实例常常设为static属性,就是为了方便访问。
例如

 public static ThreadLocal<Integer> value= new ThreadLocal<Integer>() {  
        public Integer initialValue() {  
            return 0;  
        }  
    };  

那么我们每个线程访问value的时候其实访问到的是他的副本,这个和每个线程内部维持一个局部变量是等价的。 如下图

public class TestThread extends Thread{

    int value=0;
    }

那么将这个变量暴露出来而不是作为线程的局部变量,就是为了方便访问。如果该线程需要调用其他对象的方法,就不可避免的要传递局部变量value,那么为了省去这种麻烦,才使用一个static类型的Threadlocal,这样无论在什么地方,直接访问Threadlocal对象就可以获得该线程对应的值了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值