ThreadLocal
ThreadLocal,根据名字知道肯定是跟线程有关,而且每个线程之间的同一个class的实例对象是固定的且独立,因为是local嘛。
ThreadLocal是对于每个线程拿到的对象实例都是不同的对象实例,使得各个对象隔离、独立。
ThreadLocal底层原理
我们来看看Thread、ThreadLocal和ThreadLocalMap的关系
-
每个线程都有自己的一个ThreadLocalMap,因为一个线程可能有多个ThreadLocal
-
每个ThreadLocalMap的key是ThreadLocal,Value就是我们ThreadLocal的泛型
这样就将每个线程的的同一个class,不同对象独立开来了。思想是利用空间来换取时间。
ThreadLocal源码分析
get方法
public T get() {
Thread t = Thread.currentThread();
ThreadLocalMap map = getMap(t);
if