Java中的ThreadLocal
2020-12-18 22:35
标签:red 类型 读取 override create main 赋值 数据 system ThreadLocal:一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,只有指定线程可以得到存储数据; ThreadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过get和set方法就可以得到当前线程对应的值; 使用方法: get、set方法: 每个线程持有一个ThreadLocalMap对象; 为了解决多线程中相同变量的访问冲突问题; 示例: 输出: mainx线程中的本地变量值:mainVal Java中的ThreadLocal 标签:red 类型 读取 override create main 赋值 数据 system 原文地址:https://www.cnblogs.com/xiaoxiao1120/p/13384311.htmlstatic final ThreadLocal
//set 方法
public void set(T value) {
//获取当前线程
Thread t = Thread.currentThread();
//实际存储的数据结构类型
ThreadLocalMap map = getMap(t);
//如果存在map就直接set,没有则创建map并set
if (map != null)
map.set(this, value);
else
createMap(t, value);
}
//getMap方法
ThreadLocalMap getMap(Thread t) {
//thred中维护了一个ThreadLocalMap
return t.threadLocals;
}
//createMap
void createMap(Thread t, T firstValue) {
//实例化一个新的ThreadLocalMap,并赋值给线程的成员变量threadLocals
t.threadLocals = new ThreadLocalMap(this, firstValue);
}
public class ThreadLocalTest {
static ThreadLocal
子线程中的本地变量值:null