Java代码编译后形成字节码文件,字节码被类加载器加载到JVM中,JVM将字节码转换为汇编指令在CPU上执行,整个过程并发机制的实现全部依赖于JVM和CPU的指令。
volatile
JMM存在一个主线程,每个线程有自己的私有的本地内存,本地内存中保存了一些共享变量的拷贝。
为了保证当一个线程修改了共享变量是,另一个线程可以读取到这个修改后的值(即保证内存可见性),引入了volatile关键字。
volatile的内存语义
1、保证共享变量的内存可见性。
2、禁止volatile变量与普通变量重排序。