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源码2
ThreadLocal源码3

ThreadLocal可能引起的内存泄漏

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、关于线程本地存储 线程本地存储是一种自动化机制,可以为使用相同变量的每个不同的线程都创建不同的存储,通过根除对...
    阮小贰阅读 9,252评论 0 2
  • 前言 ThreadLocal很多同学都搞不懂是什么东西,可以用来干嘛。但面试时却又经常问到,所以这次我和大家一起学...
    liangzzz阅读 14,281评论 14 228
  • 以下内容转载自:ThreadLocal 深度解析最近想学习ThreadLocal原理方面知识,通过多篇博客对比学习...
    逆水寻洲阅读 4,082评论 0 2
  • 从这个类的名字就能大体了解到类的作用,ThreadLocal可以分解为Thread和Local,前者就不多说了,后...
    Acamy丶阅读 6,965评论 0 5
  • ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储。ThreadLocal为变量在每个线...
    seuwt阅读 3,935评论 0 50

友情链接更多精彩内容