最近看面经经常能看到面试官对ThreadLocal
方面的提问,于是就去翻了翻ThreadLocal
的源码,发现源码并不长,大概看了一通,能看出其中的七七八八,打算借此来梳理一下。PS:HashMap的源码能看明白,看这个源码也不是问题。
一、基本认识
点进源码,看见ThreadLocal
是java.lang
包下的类;在网上也看了看其他人对它的概括,加上自己对看完源码后对ThreadLocal
的理解:
用于线程之间数据的隔离。简单说就是通过ThreadLocal
来开辟一块区间存放数据,这个区间作为线程的本地线程存储,只有当前线程才能获取到这个数据,这个数据对其他线程是不可见的。
可以看到ThreadLocal
的公有构造方法:
1 | public ThreadLocal() { |
就是用来创建ThreadLocal
对象,没有在其中做其他的工作。
平常用ThreadLocal
最多的两个方法就是set
、get
两个方法;那我们来看一看这两个方法的源码。