ThreadLocal的使用
更新日期:
ThreadLocal的使用
1.说明
ThreadLocal 直译为“本地线程”,其实它就是一容器,用于 存放线程的局部变量
能够保持每一个线程里面的值是相应的,说明这些值已经达到了线程私有的目的。
当你在一个类中使用 static 成员变量时,一定要问自己这个 static 成员变量需要考虑“线程安全吗?”
(也就是说 多个线程需要自己独立的 static 成员变量吗?)如果需要那就需要使用 ThreadLocal。
作用:为解决多线程程序的并发问题
2.实现机制
首先获取当前线程,在获取当前线程的ThreadLocalMap
每个Thread对象内部都维护了一个ThreadLocalMap这样一个ThreadLocal的Map,可以存放若干个 ThreadLocal。
1 | /* ThreadLocal values pertaining to this thread. This map is maintained |
当我们在调用get()方法的时候,先获取当前线程,然后获取到当前线程的ThreadLocalMap对象,如果非空,那么取出ThreadLocal的value,否则进行初始化,初始化就是将initialValue的值set到ThreadLocal中。