线程本地变量
每个线程独立拥有,线程存在,ThreadLocal就一直存在。
使用场景:spring 事务
里面有m方法,m调用了m1,m2,比如m1,m2都去访问数据库
如果分别建立两个数据库连接,事务是不支持的,所以用ThreadLocal连接。
线程里面有map,存的时候把 threadLocal当key,要存的值当value
可以看出threadLocal中map的Entry居然继承了弱引用
上面回收时,弱引用被回收之后,map中这条记录的key==null,但是这条记录删不掉,所以手动remove()