简介
ThreadLocal存取的数据,总是与当前线程相关,也就是说,JVM 为每个运行的线程,绑定了私有的本地实例存取空间,从而为多线程环境常出现的并发访问问题提供了一种隔离机制。
ThreadLocal是如何做到为每一个线程维护变量的副本的呢?其实实现的思路很简单,在ThreadLocal类中有一个Map,用于存储每一个线程的变量的副本。
常用方法
get
1 | T get() |
返回此线程局部变量的当前线程副本中的值,如果这是线程第一次调用该方法,则创建并初始化此副本。
源代码
1 |
|
set
1 | void set(T value) |
将此线程局部变量的当前线程副本中的值设置为指定值。
源代码:
1 | public void set(T value) { |
remove
1 | void remove() |
有助于减少线程局部变量的存储需求。