volatile的两个作用: 可见性防止指令重排序 不保证原子性 volitale的可见性底层使用缓存一致性协议来实现设置jvm内存屏障来实现防止指令重排序底层C++ lock指令Lock前缀先对总线和缓存加锁,然后执行后面的指令,最后释放锁后会把高速缓存中的数据全部刷新回主内存。在Lock锁住总线的时候,其他CPU的读写请求都会被阻塞,直到锁释放。