java中ThreadLocal 的理解和底层结构
时间: 2023-11-05 13:57:54 浏览: 114
ThreadLocal是Java中的一个线程局部变量,它能够为每个线程提供独立的变量副本,各个线程之间互不干扰。底层结构是通过Thread类内部维护了一个ThreadLocalMap来实现的。每个Thread对象都有一个threadLocals属性和一个inheritableThreadLocals属性,其中threadLocals是当前线程私有的ThreadLocalMap,而inheritableThreadLocals是可继承的ThreadLocalMap。ThreadLocalMap的底层数据结构是一个数组,存储了多个ThreadLocal对象及其对应的值。每个ThreadLocal对象通过哈希算法计算出一个索引位置,然后将该索引位置作为数组下标存储对应的值。这样,就实现了每个线程独立拥有自己的ThreadLocal变量。
阅读全文