结论:
为了让threadlocal的回收逻辑与使用该threadlocal的线程的回收逻辑相独立
threadlocal举例来说可以作为一个对象中的引用,比如这个对象回收了,但线程是复用的(比如线程池)如果entry是强引用,就会引起threadlocal一直不回收。
为了防止类似情况发生,采用的弱引用。
有人说我平时都是用静态变量啊?
没错,静态变量会导致threadlocal一直被强引用指着,threadlocalMap中的弱引用强引用并没有什么区别,刚刚提到的只有threadlocal对象作为对象中的成员变量时,与线程做了分割。