File tree Expand file tree Collapse file tree 1 file changed +8
-2
lines changed
Expand file tree Collapse file tree 1 file changed +8
-2
lines changed Original file line number Diff line number Diff line change @@ -323,9 +323,15 @@ ThreadLocal.ThreadLocalMap inheritableThreadLocals = null;
323323
324324通过上面这些内容,我们足以通过猜测得出结论:** 最终的变量是放在了当前线程的 ` ThreadLocalMap ` 中,并不是存在 ` ThreadLocal ` 上,` ThreadLocal ` 可以理解为只是` ThreadLocalMap ` 的封装,传递了变量值。** ` ThrealLocal ` 类中可以通过` Thread.currentThread() ` 获取到当前线程对象后,直接通过` getMap(Thread t) ` 可以访问到该线程的` ThreadLocalMap ` 对象。
325325
326- ** 每个` Thread ` 中都具备一个` ThreadLocalMap ` ,而` ThreadLocalMap ` 可以存储以` ThreadLocal ` 为key的键值对。 ** 比如我们在同一个线程中声明了两个 ` ThreadLocal ` 对象的话,会使用 ` Thread ` 内部都是使用仅有那个 ` ThreadLocalMap ` 存放数据的, ` ThreadLocalMap ` 的 key 就是 ` ThreadLocal ` 对象,value 就是 ` ThreadLocal ` 对象调用 ` set ` 方法设置的值。
326+ ** 每个` Thread ` 中都具备一个` ThreadLocalMap ` ,而` ThreadLocalMap ` 可以存储以` ThreadLocal ` 为key ,Object 对象为 value的键值对。 **
327327
328- ` ThreadLocal ` 内部维护的是一个类似 ` Map ` 的` ThreadLocalMap ` 数据结构,` key ` 为当前对象的 ` Thread ` 对象,值为 Object 对象。
328+ ``` java
329+ ThreadLocalMap(ThreadLocal<?> firstKey, Object firstValue) {
330+ ......
331+ }
332+ ```
333+
334+ 比如我们在同一个线程中声明了两个 ` ThreadLocal ` 对象的话,会使用 ` Thread ` 内部都是使用仅有那个` ThreadLocalMap ` 存放数据的,` ThreadLocalMap ` 的 key 就是 ` ThreadLocal ` 对象,value 就是 ` ThreadLocal ` 对象调用` set ` 方法设置的值。
329335
330336![ ThreadLocal数据结构] ( https://upload-images.jianshu.io/upload_images/7432604-ad2ff581127ba8cc.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/806 )
331337
You can’t perform that action at this time.
0 commit comments