JAVA的内存模型是一个很复杂的规范,可以从不同的角度来解释,本质上我们可以理解成JAVA内存模型规范了JVM如何按需禁用缓存和禁用指令重排。具体来说这些方法包括 volatile、synchronized 和 final 等关键字,以及六项 Happens-Before 规则。volatile不是JAVA独有的关键字,它最开始的含义就是禁用CPU缓存,JAVA1.5之后对它进行了语义加强,就是引入了一套Happens-Before 规则。程序的顺序性规则这条规则是指在一个线程中,按照程序顺序,前面的操作 Happens-Before 于后续的任意操作。这条规则还是比较容易理解的,就是保证了单线程中程序的顺序性。它是指主线程 A 启动子线程 B 后,子线程 B 能够看到主线程在启动子线程 B 前的操作。

JAVA内存模型和Happens-Before规则知识点讲解

JAVA内存模型和Happens-Before规则知识点讲解