目录
一、概述
jdk提供线程变量存放区ThreadLocal,采用的是对于不同线程Thread创建对应的ThreadLocalMap用于存放用户的变量的机制,当用户调用ThreadLocal.get()方法获取变量时,ThreadLocal的get方法底层会先获取到当前线程Thread,然后获取到绑定到
当前线程Thread的ThreadLocalMap,然后通过当前ThreadLocal实例的hash值,去ThreadLocalMap表中获取数据。ThreadLocal.set()方法同样,获取到绑定当前Thread的ThreadLocalMap,通过ThreadLocal实例的hash值向里面存放用户变量。
Dubbo的InternalThreadLocal与jdk的ThreadLocal类似,采用相同的绑定变量到Thread线程上机制。不同的是,不像jdk的ThreadLocalMap,它的InternalThreadLocalMap采用的是数组结构的方式存放Thread线程变量,直接通过index获取线程变量,比jdK计算hash值性能更好。
二、InternalThread
Dubbo创建类InternalThread继承Thread,主要提供threadLocalMap获取绑定到当前线程的internalThreadLocalMap和setThreadLocalMap绑定internalThreadLocalMap至当前线程两个方法。
public cl