1.一个Thread对应一个ThreadLocalMap,一个ThreadLocalMap可以对应多个ThreadLocal
2.Value的泄露造成的原因 1.ThreadLocalMap的每个Entry都是对key的弱引用,同时,每个Entry都包含一个对Value的强引用
2.正常情况下,当线程终止,保存在ThreadLocal里的value会被垃圾回收,因为没有任何强引用了,但是,如果线程不终止(比如线程需要保持很久),那么key对应的value就不能被回收,以下为调用链:
Thread------>ThreadLocalMap-------->Entry(key为null)------------->Value