**volatile怎么保证可见性**

每个线程操作数据的时候会把数据从主内存读取到自己的工作内存,根据 MESI 思想,如果某个线程修改数据写回到主内存,其他线程能通过嗅探检查到本地数据无效,然后重新从主内存读取到自己的工作内存。

volatile怎么防止指令重排序

通过在指令键加入内存屏障来防止指令重排序。