20230615 java.lang.ThreadLocal
介绍
- java.lang.ThreadLocal
- public class ThreadLocal
- 线程局部变量
API
static 方法
- withInitial
<S> ThreadLocal<S> withInitial(Supplier<? extends S> supplier)
- 创建一个线程局部变量, 其初始值通过调用给定的
supplier
生成
public 方法
- get
- 得到这个线程的当前值。如果是首次调用 get , 会调用 initialValue 来得到这个值
- set
- 为这个线程设置一个新值
- remove
- 删除对应这个线程的值
protected 方法
- initialValue
- 应覆盖这个方法来提供一个初始值。默认情况下,这个方法返回 null
代码理解
ThreadLocal.getMap
返回的是 Thread 类中的实例字段 threadLocals
// ThreadLocal 中
ThreadLocalMap getMap(Thread t) {
return t.threadLocals;
}
// Thread 中
ThreadLocal.ThreadLocalMap threadLocals = null;
ThreadLocalMap
中存储的是 Entry[] table
,而 Entry
的 key 是 ThreadLocal
对象, value 是局部变量值
所以每个 Thread 可以有多个 ThreadLocal 局部变量值,但是对于同一个 ThreadLocal 对象,只能有一个值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2017-08-22 40个Java集合面试问题和答案
2016-08-22 Java中的toString()方法