用ThreadLocal的set()方法时,实际上就是往ThreadLocalMap设置值,key是ThreadLocal对象本身,值是传递进来的对象
时间: 2024-08-18 22:00:45 浏览: 34
Java ThreadLocal用法实例详解
是的,当你调用`ThreadLocal.set()`方法时,确实是在向`ThreadLocalMap`添加一个新的条目。这个方法的工作原理如下:
```java
public void set(Object value) {
Thread thread = Thread.currentThread();
// 获取当前线程对应的ThreadLocalMap实例
ThreadLocalMap map = getMap(thread);
if (map != null) {
// 如果该线程已经有对应的ThreadLocal实例,则更新其value
map.set(this, value);
} else {
// 否则,创建一个新的ThreadLocal实例并关联到value
createNewMapEntry(thread, value);
}
}
```
在这个方法内部,`ThreadLocal`对象(即key)会与传入的对象(即value)关联起来,每个线程都有自己的ThreadLocalMap,这样就实现了线程局部变量的效果,每个线程看到的是自己设置的特定值。
阅读全文