JDK上对于ThreadLocal的说明是“该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。”由此可见,ThreadLocal保存的是线程自己变量,其他线程是不可见的。
在ThreadLocal的实现中,定义了一个嵌套类ThreadLocalMap。该类也定义了一个嵌套类Entry,用以存放线程的一个局部变量。ThreadLocalMap定义了一个Entry数组,用以存放线程的多个局部变量。每个局部变量都以ThreadLocal对象为键,T类型对象为值(T为ThreadLocalMap<T>中的T类型)。而在Thread类中定义了一个ThreadLocalMap类型的对象map,这些局部变量都放在这个对象内。
提供的方法:
T |
get() 返回此线程局部变量的当前线程副本中的值。 |
protected T |
initialValue() 返回此线程局部变量的当前线程的“初始值”。 |
void |
remove() 移除此线程局部变量当前线程的值。 |
void |
set(T value) 将此线程局部变量的当前线程副本中的值设置为指定值。 |
时间: 2024-10-12 13:22:15