ThreadLocalMap.Entry中,key为ThreadLocal,这个ThreadLocal是个弱引用,
感觉这个知识是跟虚拟机有交集的,在此请教一下
JVM在什么时机下判断 ThreadLocal 这个引用不再使用了,以下的情况会GC吗?
1.1 情况一:线程池阻塞等待任务
1.2 情况二:service调用链有同步操作,线程较长时间阻塞
线程池核心线程正在阻塞等待队列,此时Thread
中的ThreadLocalMap
对象会不会GC?
2.1 如果会GC
如果GC触发,线程池就失去了 set(object)
的object
我可不可以认为:
线程池的场景,就算ThreadLocalMap
GC,
重写initialValue()
方法,get
的时候可以重设一个object进去,
这个object应该是无状态的,如工具类SimpleDateFormat
依旧保证业务逻辑健壮