ThreadLocal源码分析
2016-09-18 23:19
435 查看
每次看到ThreadLocal总要重新复习一下源码,今天总结一下:
每个Thread类中有ThreadLocal.ThreadLocalMap threadLocals = null;这样的成员变量,ThreadLocalMap 是ThreadLocal的一个内部类,其中存储了当前ThreadLocal以及对应的value,这个threadLocals其实是一个map类型,会存储好多个键值对,相当于存储好多个ThreadLocal 对应的值
public void set(T value) {
Thread t = Thread.currentThread();
ThreadLocalMap map = getMap(t);
if (map != null)
map.set(this, value);//这个this是当前的ThreadLocal对象,每一次就把当前的ThreadLocal对应的值存入map
else
createMap(t, value);
}
每个Thread类中有ThreadLocal.ThreadLocalMap threadLocals = null;这样的成员变量,ThreadLocalMap 是ThreadLocal的一个内部类,其中存储了当前ThreadLocal以及对应的value,这个threadLocals其实是一个map类型,会存储好多个键值对,相当于存储好多个ThreadLocal 对应的值
public void set(T value) {
Thread t = Thread.currentThread();
ThreadLocalMap map = getMap(t);
if (map != null)
map.set(this, value);//这个this是当前的ThreadLocal对象,每一次就把当前的ThreadLocal对应的值存入map
else
createMap(t, value);
}
ThreadLocalMap getMap(Thread t) { return t.threadLocals; }
void createMap(Thread t, T firstValue) { t.threadLocals = new ThreadLocalMap(this, firstValue);//如果还没有这个map,就创建,一个线程对应一个map,但map中可以存好多ThreadLocal变量 }可以这么理解,每个Thread类中都有自己当前的map,每个map可以存储多对ThreadLocal,而键就是ThreadLocal对象,值就是所存的值
相关文章推荐
- ThreadLocal使用和源码分析
- 02_ThreadLocal语法与源码分析
- ThreadLocal详解,ThreadLocal源码分析,ThreadLocal图解
- ThreadLocal应用场景以及源码分析
- Netty 高性能之道 FastThreadLocal 源码分析(快且安全)
- ThreadLocal分析--部分源码
- Java 并发 ---ThreadLocal源码分析
- ThreadLocal从源码分析总结到内存泄漏
- ThreadLocal源码分析(JDK8)
- ThreadLocal源码分析
- ThreadLocal 从源码角度简单分析
- ThreadLocal源码分析
- ThreadLocal源码分析:(三)remove()方法
- ThreadLocal源码分析
- ThreadLocal 源码分析
- 【惊天真相】ThreadLocal原理与源码分析
- Java多线程学习之ThreadLocal源码分析
- lesson1:threadlocal的使用demo及源码分析
- Spring源码分析【6】-ThreadLocal的使用和源码分析
- ThreadLocal源码分析:(二)get()方法