Thread , ThreadLocal , ThreadLocalMap , Entry 之间的关系?
- Thread , ThreadLocal , ThreadLocalMap , Entry 之间的关系?
- 首先ThradLocal是线程的本地副本,怎么理解这句话呢?
- 一个Thread都有一个它自己的ThreadLocalMap。
- ThreadLocalMap不是HashMap的结构,而是一个Entry数组,里面存放了一个一个的Entry。
- 而Entry中存放的就是key和value,这个key就是ThreadLocal。
- ThreadLocal使用步骤:
- 创建ThreadLocal对象
- 获取本地线程
- 从本地线程中获取ThreadLocalMap
- 从ThreadLocalMap中找到对应的Entry进行set值
- 实例代码:
- 主线程
Thread A ——> ThreadLocalMap(其实是Entry数组)
Key Value
tl1 muse
bob
tl2 john
- 线程池
Thread A1 ——> ThreadLocalMap(其实是Entry数组)
Key Value
tl1 pool-1-thread1
Thread A2 ——> ThreadLocalMap(其实是Entry数组)
Key Value
tl1 pool-1-thread2
Thread A3 ——> ThreadLocalMap(其实是Entry数组)
Key Value
tl1 pool-1-thread3
Thread A4 ——> ThreadLocalMap(其实是Entry数组)
Key Value
tl1 pool-1-thread4