ThreadLocal提供了线程本地变量,他可以保证访问到的变量属于当前线程。每个线程都保存有一个变量副本,每个线程的变量都不同。threadLocal相当于提供了一种线程隔离,将变量与线程相绑定。
ThreadLocal适用于在多线程的情况下,可以实现传递数据,实现线程隔离。
Threadlocal底层实现原理:
1.在每个线程中都有自己独立的ThreadLocalMap对象,里面有Entry对象。
2.如果当前线程对应的ThreadLocalMap对象为空的情况下,则创建该ThreadLocalMap对象,并且赋值键值对。
key为当前new ThreadLocal对象,value就是为object变量值。
为什么线程缓存的是ThreadlocalMap对象?
ThreadLocalMap可以存放n多个不同的ThreadLocal对象;每个ThreadLocal对象只能缓存一个变量值;