ThreadLocal----源码解读
ThreadLocal 作用: 可以保证线程变量安全.也就是说用ThreadLocal定义的变量是线程安全的.
源码分析
ThreadLocal 的数据结构:实线表示强引用,虚线表示弱引用
每个 Thread 维护一个ThreadLocalMap 映射 table,映射 table 的 key 是 ThreadLocal 实例,value 就是线程存独立的变量副本的地方。
为什么这么设计,而不是由 ThreadLocal 来维护一个以 Thread 为 key 的映射呢?原因如下:
- 减小 Entry 数组大小:ThreadLocal 数量多,还是 Thread 的数量多,显而易见,使用 ThreadLocal 来当 key 可以减少 Entry 数量
- 减小内存占用:当 Thread 消亡,对 Thread 实例不在引用,则 GC 后就会清除相关数据