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;
323
323
324
324
通过上面这些内容,我们足以通过猜测得出结论:** 最终的变量是放在了当前线程的 ` ThreadLocalMap ` 中,并不是存在 ` ThreadLocal ` 上,` ThreadLocal ` 可以理解为只是` ThreadLocalMap ` 的封装,传递了变量值。** ` ThrealLocal ` 类中可以通过` Thread.currentThread() ` 获取到当前线程对象后,直接通过` getMap(Thread t) ` 可以访问到该线程的` ThreadLocalMap ` 对象。
325
325
326
- ** 每个` Thread ` 中都具备一个` ThreadLocalMap ` ,而` ThreadLocalMap ` 可以存储以` ThreadLocal ` 为key的键值对。 ** 比如我们在同一个线程中声明了两个 ` ThreadLocal ` 对象的话,会使用 ` Thread ` 内部都是使用仅有那个 ` ThreadLocalMap ` 存放数据的, ` ThreadLocalMap ` 的 key 就是 ` ThreadLocal ` 对象,value 就是 ` ThreadLocal ` 对象调用 ` set ` 方法设置的值。
326
+ ** 每个` Thread ` 中都具备一个` ThreadLocalMap ` ,而` ThreadLocalMap ` 可以存储以` ThreadLocal ` 为key ,Object 对象为 value的键值对。 **
327
327
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 ` 方法设置的值。
329
335
330
336
![ ThreadLocal数据结构] ( https://upload-images.jianshu.io/upload_images/7432604-ad2ff581127ba8cc.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/806 )
331
337
You can’t perform that action at this time.
0 commit comments