原子性:一个线程操作的时候不会被打断,线程的操作被完整的执行完成.
最终的计算结果根本就不对,计算过程被打打断了
为什么结果总是小于两万?
因为从主存拿到的数字比如 都是0 ,以下三个线程加完之后都是1
将要写回到主存这个动作可能被挂起-你写完之后我也立马写
你写完之后不是volatileh会通知我吗? 不好意思
没有那么及时,我很快的,轮到我执行,我立马写回主存,不会马上读取新数据
然后写回到主存 都是1,本来应该是3那,所以总会小于两万
看一下底层字节码
解决办法: