最近看面经经常能看到面试官对ThreadLocal方面的提问,于是就去翻了翻ThreadLocal的源码,发现源码并不长,大概看了一通,能看出其中的七七八八,打算借此来梳理一下。PS:HashMap的源码能看明白,看这个源码也不是问题。

一、基本认识

点进源码,看见ThreadLocaljava.lang包下的类;在网上也看了看其他人对它的概括,加上自己对看完源码后对ThreadLocal的理解:

用于线程之间数据的隔离。简单说就是通过ThreadLocal来开辟一块区间存放数据,这个区间作为线程的本地线程存储,只有当前线程才能获取到这个数据,这个数据对其他线程是不可见的。

可以看到ThreadLocal的公有构造方法:

1
2
public ThreadLocal() {
}

就是用来创建ThreadLocal对象,没有在其中做其他的工作。

平常用ThreadLocal最多的两个方法就是setget两个方法;那我们来看一看这两个方法的源码。