前言 Java中volatile这个热门的关键字,在面试中经常会被提及,在各种技术交流群中也经常被讨论,但似乎讨论不出一个完美的结果,带着种种疑惑,准备从JVM.C++.汇编的角度重新梳理一遍. volatile的两大特性:禁止重排序.内存可见性,这两个概念,不太清楚的同学可以看这篇文章 -> java volatile关键字解惑 概念是知道了,但还是很迷糊,它们到底是如何实现的? 本文会涉及到一些汇编方面的内容,如果多看几遍,应该能看懂. 重排序 为了理解重排序,先看一段简单的代码 1 2 3…