目录
1.ThreadLocal原理
ThreadLocal叫做线程本地存储,它为变量在每个线程中都创建一个副本,那么每个线程可以访问自己内部的副本变量。在多线程中,ThreadLocal可以令线程在访问变量时具有隔离性,保证数据在线程间的安全性。
2.ThreadLocal源码分析
(1)读取实例
public T get() {
//获取当前线程
Thread t = Thread.currentThread();
//获取一个类型为ThreadLocalMap的map
ThreadLocalMap map = getMap(t);
//当map不为null时,获取ThreadLocal中变量的值
if (map != null) {
ThreadLocalMap.Entry e = map.getEntry(this);
if (e != null) {
@SuppressWarnings("unchecked")
T result = (T)e.value;
return result;
}
}
//当map为null时,对变量进行初始化
return setInitialValue();
}
(2)设置初始值
private T setInit