Java并发编程之验证volatile指令重排-理论篇( 二 )


如在多线程的情况下,单例模式就不安全了 。
为了解决这个问题,JMM允许编译器在生成指令顺序的时候,可以插入特定类型的内存屏障来禁止指令重排序 。
当一个变量使用volatile修饰的时候,volatile关键字就是内存屏障 。当编译器在生成指令顺序的时候,发现了volatile,就直接忽略掉 。不再重排序了 。
示意图:

Java并发编程之验证volatile指令重排-理论篇

文章插图
 
 

【Java并发编程之验证volatile指令重排-理论篇】


推荐阅读