介绍
- 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 对象,只能有一个值
- ThreadLocal 20230615 java langthreadlocal 20230615 java lang varhandle 20230615 invoke java annotation annotationformaterror java lang threadlocal java threadlocal工具java threadlocal原理java java lang numberformatexception getsystenantnames java lang module classformaterror annotation 20230707 java lang classloader 20230711 java lang