Java-Interview-Summary
Java-Interview-Summary copied to clipboard
java 程序员面试指南,常用面试题汇总解答
Results
2
Java-Interview-Summary issues
Sort by
recently updated
recently updated
newest added
摘抄了你的描述如下: _**ThreadLocal 常用于维护线程私有化变量,解决线程安全问题。其内部维护了一个 ThreadLocalMap,使用 Thread 作为 key,ThreadLocal.set 的值作为 value。**_ 纠正如下: **_Thread中维护一个ThreadLocalMap,该Map的key为ThreadLocal实例,value为对应set的值。 当获取ThreadLocal中的值时:获取当前线程的ThreadLocalMap,以当前ThreadLocal实例为key ,get出所存储的值。_** ps:这里会有个坑,因为ThreadLocalMap中用Entity具体实现,Entity继承WeakReference。所以key值ThreadLocal 采用的是弱引用。所以再GC时会被回收。当回收后Map中的大量value数据无发被remove,且valud存在强引用,导致内存溢出。不过ThreadLocal再remove时增加了一个处理,remove会check所有key为null的,将value赋值为null。