ThreadLocal原理分析图(主要set和get)
2024-10-11 00:23:59 0 举报
java的ThreadLocal简单的原理分析,主要set方法和get方法
作者其他创作
大纲/内容
正常执行下面代码
执行自己的setInitialValue()方法进行初始化
为空
不为空
key valueThreadLocal对象1 传入的值1
ThreadLocalMap
ThreadLocal类关系图
key valueThreadLocal对象1 传入的值1
set方法讲解219行: 获得当前线程对象220行: 用线程对象获取ThreadLocalMap对象,在自己的getMap(t)方法里221行-225行: 判断获得的ThreadLocalMap对象是否为空222行: 在ThreadLocalMap对象里绑定一个k值是为this(代表当前的对象ThreadLocal),而附带的v值就是我们传进去的那个值'value' 注: 这些传入的值会封装成entry对象
当前Thread对象
堆
get方法讲解162行: 获得当前线程对象163行: 用线程对象获取ThreadLocalMap对象,在自己的getMap(t)方法里164行: 判断获得的ThreadLocalMap对象是否为空165行: 通过ThreadLocalMap对象的getEntry(this)方法传入一个k值(那个k值就是自己ThreadLocal)获得一个entry对象166行: 判断获得的entry对象是否为空168行: entry对象获取value值,并进行转型169行: 返回value对象
Entry[] table
栈
ThreadLocal原理分析图(主要set和get)
为了更好画图这2个Thread对象是一样的
0 条评论
下一页