ThreadLocal java

ThreadLocal是一个关于创建线程局部变量的类;使用ThreadLocal创建的变量只能被当前线程访问,其他线程则无法访问和修改.

    

    基本方法:set/get

    原理:

      ThreadLocal的set方法,大致意思为

                      首先获取当前线程

                      利用当前线程作为句柄获取一个ThreadLocalMap的对象

                     如果上述ThreadLocalMap对象不为空,则设置值,否则创建这个ThreadLocalMap对象并设置值

      (实际上ThreadLocal的值是放入了当前线程的一个ThreadLocalMap实例中,所以只能在本线程中访问,其他线程无法访问)

    位置:

      因为ThreadLocal实例实际上也是被其创建的类持有(更顶端应该是被线程持有)。而ThreadLocal的值其实也是被线程实例持有。

      它们都是位于堆上,只是通过一些技巧将可见性修改成了线程可见

猜你喜欢

转载自www.cnblogs.com/geek-sharing/p/9050953.html