![]() |
1
butanediol2d 13 天前
个人理解,这里所说的 ThreadLocalMap Key/Value 的强弱引用,指的是 ThreadLocalMap.Entry 对 Key/Value 的强弱引用,K/V 的实际生命周期还受其他对象引用的影响。
如果 Entry 对 Value 也是弱引用,那么假设还有其他对象持有对 Key 的强引用,但是没有其他对象持有对 Value 的弱引用,那有可能 GC 把 Value 回收了,再通过 Key 去取 Value 的时候返回 null 。 |
![]() |
2
butanediol2d 13 天前
补丁:但是没有其他对象持有对 Value 的*强引用*
|
![]() |
3
xtreme1 13 天前
ThreadLocalRef -> ThreadLocal ···> key
CurrentThreadRef -> CurrentThread -> ThreadLocalMap -> Entry -> value |
![]() |
4
guyeu 12 天前
本来 ThreadLocalMap.Entry.就已经是弱引用了呀,再套一层弱引用非但没有实际意义,反而会需要额外的处理来避免哈希表的引用和键值对的引用状态不一致而导致出错。
|