前言
remove()方法用于删除当前线程中缓存的以ThreadLocal对象为Key对象的线程局部变量
remove()方法分析
public void remove() {
ThreadLocalMap m = getMap(Thread.currentThread());
if (m != null)
m.remove(this);
}
1、获取当前Thread对象Thread.currentThread()
2、获取Thread对象持有的ThreadLocalMap对象,赋值给临时变量m进行临时存储
3、若获取ThreadLocalMap对象成功下,执行删除Value元素操作
将当前ThreadLocal对象传入到ThreadLocalMap的remove()方法中,该方法会删除以ThreadLocal对象为Key对象的元素
若当前Thread对象还未创建持有的ThreadLocalMap对象,此时m为null,方法中什么也不做,方法结束
总结
1、remove()线程局部变量对象,就是remove在Thread对象持有的ThreadLocalMap对象中的元素,可见ThreadLocalMap对象是多么重要,ThreadLoca对象完全依赖ThreadLocalMap对象进行缓存线程局部变量对象
2、remove()方法很友好,即便ThreadLocalMap对象还未初始化,也没关系,当你不需要线程局部变量对象的时候,请愉快的使用remove()方法