核心全在代码里面:
/**
* ThreadLocal的基本使用
* 一个 Thread 里面只有一个ThreadLocalMap ,
* 而在一个 ThreadLocalMap 里面却可以有很多的 ThreadLocal,
* 每一个 ThreadLocal 都对应一个 value。
* 因为一个 Thread 是可以调用多个 ThreadLocal 的,
* 所以 Thread 内部就采用了 ThreadLocalMap 这样 Map 的数据结构来存放 ThreadLocal 和 value
*
*/
public class ThreadLocalDemo {
public static void main(String[] args) {
// ============ThreadLocal实现线程的数据隔离,为每个线程可以单独保存线程变量数据============
/* ThreadLocal threadLocal=new ThreadLocal();
threadLocal.set("橘子");
System.out.println(threadLocal.get());*/
// ==================InheritableThreadLocal实现线程的数据通信,每个线程都可以获取其中设置的数据============
ThreadLocal tl=new ThreadLocal();
InheritableThreadLocal ith=new InheritableThreadLocal();
tl.set("hello world");
ith.set("hello world");
//在子线程中,获取InheritableThreadLocal的值
new Thread(()->{
System.out.println(tl.get()); //null
System.out.println(ith.get()); //hello world
}).start();
}
}