ThreadLocal详解
ThreadLocal解析
本文参照一枝花算不算浪漫
ThreadLocal的特点:
- 线程并发:在多线程场景下
- 传递数据:可以通过ThreadLocal在同一线程,不同组件中传递公共变量
- 线程隔离:每个线程的变量都是独立的,不会相互影响
主要探讨以下问题:
ThreadLocal
的key是弱引用,那么在ThreadLocal.get()
的时候,发生GC之后,key是否为null?ThreadLocal中ThreadLocalMap
的数据结构?ThreadLocalMap
的Hash算法?ThreadLocalMap
的扩容机制?ThreadLocalMap
中过期key的清理机制?探测式清理和启发式清理流程?ThreadLocalMap.set()
方法实现原理?ThreadLocalMap.get()
方法实现原理?