threadLocal知识:
实现原理:
每个Thread中存储着一个成员变量, ThreadLocalMap(真正存储数据的地方)
ThreadLocal 本身不存储数据,像是一个工具类,基于ThreadLocal去操作ThreadLocalMap
ThreadLocalMap是ThreadLocal的内部类,本身是基于Entry[]实现的,因为一个线程可以绑定多个ThreadLocal,这样一来,可能需要存储多个数据,所以采用Entry[]的形式实现
每一个现有自己独立的ThreadLocalMap ,再基于ThreadLocal对象本身作为key,对value进行存取
ThreadLocalMap的key是一个弱引用,弱引用的特点是,即便有弱引用,在GC时,也必须被回收,这里是为了在ThreadLocal对象失去引用后,如果key的引用是强引用,会导致ThreadLocal对象无法被回收
评论区