JMM和Volatile底层原理分析
JMM和volatile分析 1.JMM:Java Memory Model,java线程内存模型 JMM:它是一个抽象的概念,描述的是线程和内存间的通信,java线程内存模型和CPU缓存模型类似,它是标准化的, 用于屏蔽硬件和操作系统对内存访问的差异性 。 2.JMM和8大原子操作结合 3.volatile的应用及底层原理探究 volatile : 轻量级的synchronized,在多处理器的开发中保证了共享变量的"可见性"。可见性的意思:当一个线程修改了某个共享变量时,其他使用到该共享变量的线程能够及时读取到修改的值。修饰得当,比synchronized的执行成本更低,因为它不会引起线程上下文切换和调度。 public class VolatileTest { private static volatile boolean flag = false; public static void main(String[] args) { update(); } public static void update(){ flag = true; System.out.println(flag); } } Volatile JIT编译器编译java代码为汇编指令查看 1.在jdk\jre\bin\ 目录下添加 hsdis-amd64.lib 2.在jdk1.8\jre\bin