分析一下ThreadLocal源码的实现
JDK里面的Thread类,内部有一个ThreadLocalMap内部类,代表了一个map,每个Thread线程对象自己内部就有一个核心的数据结构是map
这个map只能是某个线程自己内部可以使用的一份数据,是不是就是代表了线程本地的副本。一个Thread可以放多个ThreadLocal对应的本地变量副本
数据结构:
Thread {
ThreadLocalMap {
ThreadLocal(requestId): 1L,
ThreadLocal(txid):1L
}
}
requestId.get() -> Thread.ThreadLocalMap.get(requestId) -> 1L