ThreadLocal用于线程局部变量的一个工具类。
原理是为每个线程创建独立的变量副本,从而实现线程数据的隔离。
具体来说,ThreadLocal 通过一个 ThreadLocalMap来实现。
这个 ThreadLocalMap 是一个自定义的哈希表,用于存储线程和对应的变量值。
使用 ThreadLocal 时,每个线程都有自己的 ThreadLocal 实例,用于存储线程私有的数据。
ThreadLocalMap 使用弱引用保存线程的变量,这样可以避免内存泄漏的问题。
每个线程在调用 ThreadLocal 的 set 方法时,会将值放入当前线程的 ThreadLocalMap 中;而在调用 get 方法时,则从当前线程的 ThreadLocalMap 中获取值