`
wanxiaotao12
  • 浏览: 485373 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

正确理解ThreadLocal

 
阅读更多

一般用法:

class Test{

public static ThreadLocal test = new ThreadLocal();

public static String getThreadLocalTest(){

   return test.get();

}

 

public static void setThreadLocalTest(String value){

   test.set(value);

}

}

 

当test.set(value)给ThreadLocal变量值时, 低层方法实现:将当前的ThreadLocal实例做为key, 将值做为value,做为Map, 跟当前线程绑定的, 在代码的其他的地方, 可以直接Test.getThreadLocalTest(),获取当前线程的ThreadLocal为key的值

1、ThreadLocal类中的代码

public void set(T value) {   
        Thread t = Thread.currentThread(); 
        //取得当前线程的ThreadLocal的内部类ThreadLocalMap  
        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)   
            return (T)map.get(this);   
  
        // Maps are constructed lazily.  if the map for this thread   
        // doesn't exist, create it, with this ThreadLocal and its   
        // initial value as its only entry.   
        T value = initialValue();   
        createMap(t, value);   
        return value;   
    } 

    ThreadLocalMap getMap(Thread t) {   
        return t.threadLocals;   
    }  

 

2、Thread类

publicclass Thread implements Runnable { 

...... 

 /* ThreadLocal values pertaining to this thread. This map is maintained 


* by the ThreadLocal class. */

//Thread类中有一个属性是:ThreadLocalMap,与当前线程绑定的值
ThreadLocal.ThreadLocalMap threadLocals = null; 

...... 


} 

  

 

 

 

主题:正确理解ThreadLocal

 

关于ThreadLocal模式的体会

 

 

分享到:
评论

相关推荐

    正确理解ThreadLocal.pdf

    ### 正确理解ThreadLocal:深入解析其工作原理与应用场景 #### 一、ThreadLocal的基本概念 `ThreadLocal`是Java平台提供的一种线程局部变量的解决方案,它为每一个使用该变量的线程都提供了独立的变量副本,使得每...

    ThreadLocal

    - 内存泄漏:如果线程长时间存活,或者ThreadLocal对象没有被正确清理,可能导致ThreadLocalMap中的引用无法被垃圾回收,从而造成内存泄漏。 - 不适用于跨线程通信:ThreadLocal只保证同一线程内的数据隔离,不同...

    threadLocal

    1. 多线程:理解ThreadLocal的使用必须建立在对多线程的理解基础上,包括线程的创建、执行、同步机制等。 2. 并发编程:ThreadLocal是解决并发问题的一种策略,它提供了一种避免共享状态的方式,减少了锁的使用。 3....

    ThreadLocal的几种误区

    ThreadLocal是Java编程中一种非常特殊的变量类型,它主要...正确使用ThreadLocal可以提高代码的并发性能,而滥用则可能导致难以预料的问题。因此,在使用ThreadLocal时,需要充分考虑其生命周期管理和线程安全问题。

Global site tag (gtag.js) - Google Analytics