跳转到内容
主菜单
主菜单
移至侧栏
隐藏
规范/协议
协议
算法
JVM
多线程/并发
存储
AI
深度学习
工具箱
最近更改
文章分类
全部文章
WHY42
搜索
搜索
外观
登录
个人工具
登录
欢迎来到Riguz的小站!这是一个私人wiki,用来记录一些我的笔记。
查看“︁Java ThreadLocal”︁的源代码
页面
讨论
大陆简体
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
页面信息
外观
移至侧栏
隐藏
←
Java ThreadLocal
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
= ThreadLocal原理 = 每个Thread中维护了一个<span class="article-label">ThreadLocal.ThreadLocalMap</span>的对象来存储: * 这个变量默认是null,会在线程第一次调用get方法的时候初始化。 * 这个map维护了ThreadLocal对象与值的映射。<syntaxhighlight lang="java" inline>map.set(this, value);</syntaxhighlight> <syntaxhighlight lang="java"> public T get() { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) { ThreadLocalMap.Entry e = map.getEntry(this); if (e != null) { @SuppressWarnings("unchecked") T result = (T)e.value; return result; } } return setInitialValue(); } </syntaxhighlight> <syntaxhighlight lang="java"> /* ThreadLocal values pertaining to this thread. This map is maintained * by the ThreadLocal class. */ ThreadLocal.ThreadLocalMap threadLocals = null; /* * InheritableThreadLocal values pertaining to this thread. This map is * maintained by the InheritableThreadLocal class. */ ThreadLocal.ThreadLocalMap inheritableThreadLocals = null; </syntaxhighlight> <q> ThreadLocal instance does not keep but provides the access to thread-specific value using itself as a key. </q> = WeakReference = 这个map中的key使用了WeakReference, <syntaxhighlight lang="java"> static class Entry extends WeakReference<ThreadLocal<?>> </syntaxhighlight> [[Category:Concurrency]]
返回
Java ThreadLocal
。
搜索
搜索
查看“︁Java ThreadLocal”︁的源代码
添加话题