ThreadLocal: 为共享变量在每个线程创建一个副本,每个线程可以访问自己内部的副本变量。
使用场景:在多线程环境下,访问共同变量相互之间会有影响,ThreadLocal就是为了隔离线程之间的影响。
解读源码:
每一个Thread里面都有一个ThreadLocalMap这个map只有一个key就是当前的ThreadLocal(this),ThreadLocal通过set方法set值的时候首先通过当前Thread来获取ThreadLocalMap,并且该值为null,接着值为null就会调用ThreadLocal中的createMap方法,该方法通过new一个新的ThreadLocalMap直接通过当前ThreadLocal和set的值来构建。