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