ThreadLocal
多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题。
ThreadLocal是JDK包提供的,它提供线程本地变量,如果创建一乐ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个副本,在实际多线程操作的时候,操作的是自己本地内存中的变量,从而规避了线程安全问题。
强引用
(在堆中直接创建对象)
软引用
用于缓存,如果堆空间不够用时,GC清理
弱引用
GC后一定回收
所用:一般用做容器
Map:threadLocals指向的key是弱引用,防止内存泄漏(内存遗漏)
虚引用
为写JVM的人用的,为了管理堆外内存
作用:给一个通知,放在queue队列里