1. ThreadLocal源码及数据结构
- ThreadLocal本身不存储数据,存储数据的是线程Thread,Thread有一个ThreadLocalMap类型threadLocals的属性,用于存储数据。
- ThreadLocalMap是ThreadLocal的一个静态内部类,ThreadLocalMap存储数据的属性是一个Entry数组
- 这个Entry是ThreadLocalMap的一个静态内部类,是一个弱引用。其key是ThreadLocal对象,value是存储的值。
- 这样的设计保证了每个线程的ThreadLocal都是自己私有的,对其数据的操作不会影响到其他线程。