ThreadLocal
2021-01-20 15:55:54 14 举报
ThreadLocal类图及使用对应关系
作者其他创作
大纲/内容
逻辑类图
ThreadLocalMap3
set()
inheritableThreadLocals
thread2
tl2.set(1024)
ThreadLocalMap1
getMap()
当前ThreadLocal
String str
value
TLM1.table[hash(tl1)] = \"qiqi\"
initialValue
thread1
ThreadLocalMap2
Integer num
\"hello\" <- tl1.get()
tl1.set(\"hello\")
TLM2.table[hash(tl1)] = \"hello\"
1024 <- tl2.get()
tl1.set(\"qiqi\")
WeakReference<ThreadLocal<?>>
Thread
对应关系
ThreadLocalMap
Entry
threadLocals
一个ThreadLocal只能存储一个Object对象,如果需要存储多个Object对象那么就需要多个ThreadLocal线程销毁后,Entry中ThreadLocal会被回收,value会被置为null,但Entry不会被回收,所以需要手动removeThreadLocal其实就是一个工具类,用来操作线程局部变量,ThreadLocal 实例通常是类中的 private static 字段每个Thread本身就包含了两个ThreadLocalMap对象的引用当调用某个ThreadLocal对象的get或put方法时,首先会从当前线程中取出ThreadLocalMap,然后查找对应的value
thread3
get()
key
ThreadLocal实例的变量只有这个threadLocalHashCode,而且是final的,get和set时用来区分不同的ThreadLocal实例
ThreadLocal
\"qiqi\" <- tl1.get()
tl2 = new ThreadLocal<Integer>
Entry[] table
tl1 = new ThreadLocal<String>
threadLocalHashCode
绑定值
TLM3.table[hash(tl2)] = 1024
0 条评论
下一页