分析一下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