首页 > 其他 > 详细

记录一下ThrealLocal

时间:2021-08-24 09:38:55      阅读:21      评论:0      收藏:0      [点我收藏+]

ThreadLocal  --->   当调用set(Object value)方法时, 

    1.   获取当前线程的ThreadLocalMap【用的子类Entry,可以直接理解为就是一个Map】  (key: Threadlocal(当前threadlcoal对象);  value: Object(要设置的值))   

          [为什么是map ,因为一个线程里面可能有多个threadlocal,  但一个线程只会有一个ThreadlLocalMap];  

    2.   当ThreadLocalMap 为null,则为当前线程创建一个ThreadLocalMap;   否则从当前线程的ThreadLocalMap中  找到Key为当前 ThreadLocal的Entry,  将其Value设为Object;

 

ThreadLocal  --->   当调用get()方法时,

     1.  原理同上;

 

 

总结: 每个线程都有一个独立的ThreadLocalMap属性,  这样就做到了每个线程之间数据的隔离;  同时ThreadlLocalMap通过Map(多个Entry,一个ThreadLocal和Value对应一个Entry)格式实现了同一个线程中不同Threalocal的数据隔离

 技术分享图片

 

记录一下ThrealLocal

原文:https://www.cnblogs.com/yangxijun/p/15177967.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!