ThreadLocal结构
ThreadLocalMap结构
Key: 当前thread Value:set时的value
- 创建线程Thread > 2.使用ThreadLocal
Thread对象结构:
ThreadLocal.ThreadLocalMap inheritableThreadLocals = null;
线程初始化时便持有一个空ThreadLocal.ThreadLocalMap
在执行java.lang.ThreadLocal#set方法时的流程:
- 获取当前线程
- 获取线程变量map(ThreadLocalMap)
- 判断map是否为null
- 如果map==null,创建ThreadLocalMap对象,并赋给当前线程变量t.threadLocals
- 如果map!==null,则执行java.lang.ThreadLocal.ThreadLocalMap#set