ThreadLocal

当使用ThreadLocal对象维护一个变量时,ThreadLocal对象为每个使用该变量的线程提供独立的副本,所以线程可以独立的改变自己的副本,而不会影响其他线程的变量副本。

从线程的角度看,目标变量就像是各个线程的本地变量(线程私有),这也是类名中Local的含义。

ThreadLocal的实现:

(1)ThreadLocal对象并不存储值,值存储在Thread对象的threadLocalMap属性中。

threadLocalMap 存储了key位ThreadLocal,value为。

(2)ThreadLocal 的 get()方法:首先通过getMap(Thread t)方法获得当前线程的threadLocalMap对象,然后根据key(key 为当前threadLocal对象,即this),从而获得value。

(3)setInitialValue()方法中的initialValue()方法是一个protected方法,在new 一个ThreadLocal对象时可以重写该方法。

ThreadLocal_第1张图片
ThreadLocal源码1


ThreadLocal_第2张图片
ThreadLocal源码2
ThreadLocal_第3张图片
ThreadLocal源码3

ThreadLocal可能引起的内存泄漏

www.cnblogs.com/onlywujun/p/3524675.html

你可能感兴趣的:(ThreadLocal)