概念
/**
* This class provides thread-local variables. These variables differ from
* their normal counterparts in that each thread that accesses one (via its
* {@code get} or {@code set} method) has its own, independently initialized
* copy of the variable. {@code ThreadLocal} instances are typically private
* static fields in classes that wish to associate state with a thread (e.g.,
* a user ID or Transaction ID).
*/
Threadlocal是一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,只有指定线程通过get和set方法就可以得到当前线程对应的存储数据。
ThreadLocal是JDK包提供的,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,ThreadLocal 的作用 是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或 者组件之间一些公共变量的传递的复杂度。
实现原理
如果自己来设计ThreadLocal对象,那么,一般的实现思路:设计一个线程安全的Map,key就是当前线程对象,Value就是线程本地变量的值。
然而,JDK的实现思路: