threadlocal变量要不要volatile
循环日志 由这篇日志引出的奇怪的问题
原文的目的是尽早回收ThreadMap里的非活跃对象,不要搞的map太大
手段是从外部将所有 各种对象所引用的Threadlocal强制set为null,那么要强刷掉这些对象所在线程的缓存,则threadlocal对象也应该如内存泄漏事故(二)线程的中断不可信任【重要】配合volatile强制回收子线程成员变量一样设置为volatile,原理是一样的
Callable {
volatile LoggerLimit
}
LoggerLimit 中有个threadlocal对象
当强制刷掉callable的loggerlimit后,所有线程的loggerlimit成员变量副本全部成为可回收,则在里面引用的threadlocal对象也可回收了
=========================
@Singleton
A {
ThreadLocal th = new ThreadLocal (这里new出来的ThreadLoca对象记为X)
}
假设两个线程使用之后X这个对象强引用,有可能有2个;如果外部第三条线程把A的对象的th设置为null,未必会把强引用都打断,所以应设置为volatile
浙公网安备 33010602011771号