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 对象,只能有一个值

posted @   流星<。)#)))≦  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源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()方法
点击右上角即可分享
微信分享提示