避免并发异常最简单的方法就是线程封闭
即 把对象封装到一个线程里,只有该线程能看到此对象;
那么该对象就算非线程安全,也不会出现任何并发安全问题.
1.1 栈封闭
局部变量的固有属性之一就是封闭在线程中...引发的,因为线程池有线程复用和内存常驻两个特点
1 脏数据
线程复用会产生脏数据;
由于线程池会重用 Thread 对象,与 Thread 绑定的静态属性 ThreadLoca l变量也会被重用....,是线程B永远得不到的
即使在线程B中重新set,也不会影响A中的值;
保证了线程之间不会相互干扰....,则寻找下一个空位
如此,在get时,也会根据ThreadLocal对象的hash值,定位到table中的位置.然后判断该位置Entry对象中的key是否和get的key一致,如果不一致,就判断下一个位置...= null)
map.set(this, value);
也就是将该ThreadLocal实例作为key,要保持的对象作为值,设置到当前线程的ThreadLocalMap 中,get(