initialValue()
    1. 该方法会返回当前线程对应的”初始值”,这是一个延迟加载的方法,只有在调用get的时候,才会触发;
    2. 当线程第一次使用get方法访问变量时,将调用此方法,除非线程先调用set方法,在这种情况下,不会为线程调用initiaValue方法

    set(T t):为这个线程设置一个新值

    get():得到这个线程对应的value。如果是首次调用get(),则会调用initialize来得到这个值

    remove():删除对应这个线程的值

    get方法: get方法是先取出当前线程的ThreadLocalMap,然后调用map.getEntry方法,把本ThreadLocal的引用作为参数传入,取出map中属于本

    ThreadLocal的value
    注意这个map以及map中的key和value都是保存在线程中的,而不是保存在ThreadLocal中

    两种使用场景:::
    通过源码分析可以看出,setInitialValue和直接set最后都是利用map.set方法来设置值
    也就是说,最后都会对应到ThreadLocalMap的一个Entry,只不过是起点和入口不一样