ThreadLocal

来源:互联网 发布:effective java英文版 编辑:程序博客网 时间:2024/06/09 23:10

ThreadLocal:
ThreadLocal学名叫”线程局部变量”,作用是使得每一个使用此变量的线程都提供一个变量值的副本(用空间换时间),每个线程都能独立改变自己的副本,不会和其他线程副本发生冲突.
只要线程是活动的并且ThreadLocal实例可以被访问,每个线程都保持一个对其线程局部变量副本的隐式引用.如果这些副本对GC Root不可达,那么在线程消亡之后,这些副本也会相应被回收.通过ThreadLocal存取数据,总是保持与当前线程有关,也就是说,JVM为每个运行的线程绑定了私有的本地实例存取空间,为多线程环境出现的并发访问提供了一个隔离机制.
ThreadLocal类中维护了一个Map来存储每个线程变量的副本
ThreadLocal中的Map
Map中Key为线程对象,Value为对应线程的副本.