volatile变量两大特性:
1)线程可见性
2)禁止指令重排序
内存屏障: volatile变量的汇编代码中,在变量赋值之后,执行了一个lock开头的指令,lock指令使本cpu的cache写入内存,同时使其他cpu中缓存失效,这使得volatile变量的修改对其他cpu立即可见。内存屏障同时起到禁止指令重排序的效果。/TODO