栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java threadLocal源码探究

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java threadLocal源码探究

有些人对使用ThreadLocal的使用不是很理解,这里还要从原理讲起。我们可以在其中找到许多方法,ThreadLocal可以加名称后面加入一些方法,然后结合在一起使用,可以把它看成方法的汇集。下面我们就以ThreadLocalMap使用为例,对ThreadLocal源码进行探索和分析。

1.ThreadLocal的内部结构

ThreadLocal并不维护ThreadLocalMap,并不是一个存储数据的容器,它只是相当于一个工具包,提供了操作该容器的方法,如get、set、remove等。而ThreadLocal内部类ThreadLocalMap才是存储数据的容器,并且该容器由Thread维护。

2.ThreadLocalMap实例

static class ThreadLocalMap {
   
    static class Entry extends WeakReference> {
       
       Object value;
       Entry(ThreadLocal k, Object v) {
           super(k);
           value = v;
       }
    }
    //还有很多很多
}

我们可以看到ThreadLocalMap其实就是ThreadLocal的一个静态内部类,里面定义了一个Entry来保存数据,而且还是继承的弱引用。在Entry内部使用ThreadLocal作为key,使用我们设置的value作为value。

3.ThreadLocal源码总结

(1)每个Thread维护着一个ThreadLocalMap的引用。

(2)ThreadLocalMap是ThreadLocal的内部类,用Entry来进行存储。

(3)ThreadLocal创建的副本是存储在自己的threadLocals中的,也就是自己的ThreadLocalMap。

(4)ThreadLocalMap的键值为ThreadLocal对象,而且可以有多个threadLocal变量,因此保存在map中。

以上就是java中关于threadLocal源码探究,相信大家已经能够理论threadLocal使用的原理。把threadLocal作为其他方法的使用基础,然后可以结合起来带来更多的使用。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/15163.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号