一、 ThreadLocal是什么
ThreadLocal,即线程变量,是一个以ThreadLocal对象为键,任意对象为值的存储结构。这个结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。(注意:一个线程可以存放多个ThreadLocal对象。)
二、 ThreadLocal类的核心方法
ThreadLocal类提供了以下几个核心方法:
- get():获取当前线程的变量值
- set(T value):设置当前线程的变量值
- remove():移除当前线程的变量值
- initialValue():初始化当前线程的变量值
三、 get()方法
public T get() {
Thread t = Thread.currentThread();
ThreadLocalMap map = getMap(t);
if (map != null) {
ThreadLocalMap.Entry e = map.getEntry(this);
if (e != null) {
@SuppressWarnings("unchecked")
T result = (T)e.value;
return result;
}
}
return setInitialValue();
}