1.线程私有变量
    2.每个Thread对象都有一个ThreadLocalMap。
    2.ThreadLocal内部含有ThreadLocalMap类,当调用ThreadLocal的set方法会先获取当前线程的ThreadLocalMap,然后将ThreadLocal对象作为键在map中获取值。
    3.ThreadLocalMap内部的Entry类继承了弱引用,当ThreadLocal被回收时,Entry类的key也会被回收,防止内存泄漏。为了进一步回收掉Entry里的value,使用ThreadLocal.remove()。
    image.png