1.线程局部变量,同一个线程内共享数据
2.api:ThreadLocal底层是一个Map,其api和map也很类似
set(value):给ThreadLocal赋值,ThreadLocal底层是一个Map,key是当前线程名,value就是参数里传进来的value值。可以想象出set(value)的底层是执行了map.put(线程名,value)操作
get():得到ThreadLocal里的value,底层用的是map.get(线程名);
remove():去除ThreadLocal里的value,底层用的是map.remove(线程名);
3.ThreadLocal local=new ThreadLocal();后,底层产生一个Map,map里存的是不同线程访问的线程名和对应的value。取值的时候根据线程名去取值。只要new出一个ThreadLocal,那么这个map就存放了线程名及其对应的value值。