threadlocal变量要不要volatile【yet】

循环日志 由这篇日志引出的奇怪的问题

原文的目的是尽早回收ThreadMap里的非活跃对象,不要搞的map太大

手段是从外部将所有 各种对象所引用的Threadlocal强制set为null,那么要强刷掉这些对象所在线程的缓存,则threadlocal对象也应该如

内存泄漏事故(二)线程的中断不可信任【重要】配合volatile强制回收子线程成员变量

一样设置为volatile,原理是一样的

@Singleton

A {

  ThreadLocal th = new ThreadLocal (这里new出来的ThreadLoca对象记为X)

}

假设两个线程使用之后X这个对象强引用,有可能有2个;如果外部第三条线程把A的对象的th设置为null,未必会把强引用都打断,所以应设置为volatile

 

posted on   silyvin  阅读(3)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2019-12-02 0tcpdump使用与ping
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示