码迷,mamicode.com
首页 > 其他好文 > 详细

ThreadLocal<T>

时间:2017-10-19 16:00:26      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:adl   null   imp   local   自己   java   属性   用户   oca   

图解:

技术分享

说明:在我们Thread 的类里面,存在一个属性,这个属性是:ThreadLocal类实现的内部类(ThreadLocalMap),所以对于每一个线程来说,他都具有一个本地的map,保存属于自己的参数

类似于:session 里面 存放一个map,     把用户看做线程,session当做Thread

 

java.lang.ThreadLocal<T>实现

 public void set(T value) {  
       Thread t = Thread.currentThread();  
       ThreadLocalMap map = getMap(t);  
       if (map != null)  
           map.set(this, value);  
       else  
           createMap(t, value);  
   } 

  

public T get() {  
    Thread t = Thread.currentThread();  
    ThreadLocalMap map = getMap(t);  
    if (map != null) {  
        ThreadLocalMap.Entry e = map.getEntry(this);  
        if (e != null)  
            return (T)e.value;  
    }  
    return setInitialValue();  
} 

  

 private T setInitialValue() {  
       T value = initialValue();  
       Thread t = Thread.currentThread();  
       ThreadLocalMap map = getMap(t);  
       if (map != null)  
           map.set(this, value);  
       else  
           createMap(t, value);  
       return value;  
   } 

  

与java.lang.Thread  implements Runnable (){。。。}的关联

此类的变量中存在

ThreadLocal.ThreadLocalMap threadLocals = null;

ThreadLocal<T>

标签:adl   null   imp   local   自己   java   属性   用户   oca   

原文地址:http://www.cnblogs.com/sg9527/p/7692652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!