首页 > 其他 > 详细

ThreadLocal

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

ThreadLocal

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!