7 【ThreadLocal六连问,你扛得住吗? - 程序员大彬 | 小红书 - 你的生活指南】 😆 AaISgO579ax2fHQ 😆 http://xhslink.com/7QDwZR

Untitled

每个线程都有一个 ThreadLocalMap(ThreadLocal 内部类),Map 中元素的键为 ThreadLocal,而值对应线程的变量副本

Untitled

Untitled

调用 threadLocal.set() —> 调用 getMap(Thread) —> 返回当前线程的 ThreadLocalMap —> map.get(this, value), this 是 threadLocal 本身。源码如下:

调用 get() 方法 —> 调用 getMap(Thread) —> 返回当前线程的 ThreadLocalMap —> map.getEntry(this),返回 value。源码如下;

threadLocals 的类型 ThreadLocalMap 的键为 ThreadLocal 对象,因为每个线程中可有多个 threadLocal 变量,如 longLocal 和 stringLocal。

ThreadLocal 并不是用来解决共享资源的多线程访问问题,因为每个线程中的资源只是副本,不会共享。因此 ThreaLocal 适合作为线程上下文变量,简化线程内传参。

threadlocal原理说下

ThreadLocal 的底层原理是什么?

ThreadLocal底层实现原理?