码迷,mamicode.com
首页 > 其他好文 > 详细

ThreadLocal

时间:2019-01-19 14:26:38      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:垃圾回收   oca   上下文   类构造   设计   故障   str   范围   node   

  • 引用类型
    • 强引用StrongReference
      • 最长使用
    • 软引用SoftReference
      • 在即将OOM之前,垃圾回收器会把这些软引用指向的对象加入回收范围
      • 一般可用于同一台服务器内缓存低频访问的中间结果
    • 弱引用WeakReference
      • 下一次YGC时会被回收
    • 虚引用PlantomReference
      • 定义完成后,就无法通过该引用获取指向的对象
      • 唯一目的是希望在垃圾回收时收到一个系统通知
      • 几乎很难用到
  • 由于过度设计,成为故障高发点
    • 内存泄露
    • 脏数据
    • 共享对象更新
  • 每个线程都有一个独立的变量副本,其他线程不能访问
  • 无法解决共享对象的更新问题
  • 有什么作用?
    • 传递线程内变量
    • 通常用于同一个线程内,跨类、跨方法传递数据。如果没有他,势必要靠返回值和参数。
  • 解决父子线程之间共享线程变量问题
    • 使用ThreadLocal和InheritableThreadLocal
    • 通过将Thread类构造方法的最后一个参数设置为true,可以把当前线程的变量继续往下传递给它创建的子线程。
    • 淘宝使用这种方式透传全局上下文,如存储监控系统的某个标记位traceId,如果参数未设置为true,则子线程里获取的traceId为null

ThreadLocal

标签:垃圾回收   oca   上下文   类构造   设计   故障   str   范围   node   

原文地址:https://www.cnblogs.com/bee4j/p/10291481.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!