(1)new ThreadLocal 对象;
(2)ThreadLocal里面有个ThreadLocalMap 的内部类,存放;
(3)每个Thread 有一个ThreadLocalMap成员变量;
(4)threadlocal.set(T):相当于为每一个线程创建了一个Object得副本变量;
threadlocal.get():获取当前thread内部ThreadLocal对象对应得value;
是这样理解的吗? 这样得话每个线程操作副本时候不会相互影响是吧,还有呢? 还解决了什么问题?
1、Java ThreadLocal是和单个线程相关的变量,没有线程安全问题,自带自用,好比每个人出去旅游自带水壶一样,不会互相争用,。
2、每个线程都有自己的ThreadLocal变量,
3、线程可以使用它的get()和set()方法来获取默认值或将其值更改为Thread的本地值。
4、ThreadLocal实例通常是希望将状态与线程相关联的类中的私有静态字段。
阿里巴巴云栖社区Java专场12月22日周六下午 杭州,https://yq.aliyun.com/activity/796不少同学 高铁 飞机来杭州参加大会
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。