文章目录
  1. 1. ThreadLocal的使用
    1. 1.1. 1.说明
    2. 1.2. 2.实现机制

ThreadLocal的使用

1.说明

​ ThreadLocal 直译为“本地线程”,其实它就是一容器,用于 存放线程的局部变量

​ 能够保持每一个线程里面的值是相应的,说明这些值已经达到了线程私有的目的。

​ 当你在一个类中使用 static 成员变量时,一定要问自己这个 static 成员变量需要考虑“线程安全吗?”

​ (也就是说 多个线程需要自己独立的 static 成员变量吗?)如果需要那就需要使用 ThreadLocal。

作用:为解决多线程程序的并发问题

2.实现机制

​ 首先获取当前线程,在获取当前线程的ThreadLocalMap

​ 每个Thread对象内部都维护了一个ThreadLocalMap这样一个ThreadLocal的Map,可以存放若干个 ThreadLocal。

1
2
3
/* ThreadLocal values pertaining to this thread. This map is maintained
* by the ThreadLocal class. */
ThreadLocal.ThreadLocalMap threadLocals = null;

​ 当我们在调用get()方法的时候,先获取当前线程,然后获取到当前线程的ThreadLocalMap对象,如果非空,那么取出ThreadLocal的value,否则进行初始化,初始化就是将initialValue的值set到ThreadLocal中。

文章目录
  1. 1. ThreadLocal的使用
    1. 1.1. 1.说明
    2. 1.2. 2.实现机制