ThreadLocal的错误理解纠正
来源:互联网 发布:北航软件工程硕士学费 编辑:程序博客网 时间:2024/04/26 06:47
目前网络上有很多关于Java中 ThreadLocal类原理的讲解,但是发现解读源码真正对的是比较少的,有很多人都错误的理解为:ThreadLocal之所以可以使每一个线程都有自己的变量副本,是由于它封装了一个Map集合,以每一个线程对象为key,变量副本为value来保存数据。
其实ThreadLocal对象并没有自己维护一个Map集合来保存每一个线程的变量副本,而是每一个线程本身维护了一个ThreadLocalMap集合来保存自己的数据, ThreadLocal 的get方法和set方法操作的都是当前线程自己的ThreadLocalMap,每一个线程的ThreadLocalMap集合,会用这个ThreadLocal对象作为为key,自己的数据副本作为value。
总之:1、ThreadLocal对象将作为每一个Thread对象中的ThreadLocalMap的key,
一般我们会将ThreadLocal定义为static的,因为每一个线程可以共用这个key。
2、ThreadLocal的get和set方法操作的都是每一个“当前线程”的ThreadLocalMap。
3、ThreadLocal中的getMap()方法是为了得到每一个“当前线程”自己的ThreadLocalMap。
4、ThreadLocal中的createMap()方法是为了给每一个“当前线程”自己的ThreadLocalMap赋值。
5、ThreadLocal中的initialValue()方法是为了方便用户重写,便于执行get方法的时候为
每一个“当前线程”中的数据副本赋值,否则默认会为null。
- ThreadLocal的错误理解纠正
- 一个错误纠正的解释
- 个人对Java中String对象的传递的理解(错误之处,请给与纠正,
- android 里 对Adapter notifyDataSetChanged(更改唤醒)的理解错误纠正
- 关于apache以fastcgi模式运行php的错误理解纠正
- Allegro学习之纠正之前对生成网络表时元件封装的理解错误
- 错误纠正
- 对ThreadLocal的理解
- ThreadLocal的理解
- ThreadLocal的理解
- 关于ThreadLocal的理解
- 对ThreadLocal的理解
- ThreadLocal的理解(转载)
- ThreadLocal类的理解
- ThreadLocal的理解
- ThreadLocal 的理解
- ThreadLocal的理解
- ThreadLocal的个人理解
- 温故知新
- 数据统计_百度统计
- HDU 5808 Price List Strike Back
- 剑指Offer: 二叉树的深度、平衡二叉树
- 【javase复习】## 网络编程 ##
- ThreadLocal的错误理解纠正
- Quartz(08) quartz spring web 项目的整合(方法二)
- wireshark学习总结(1)---有用的链接
- android studio sqlite一个基本操作
- 集训总结一
- httpURLConnection获得网络数据解析json串
- java运算符
- UVA532 Dungeon Master
- UI基本控件