java内存模型

前言 在物理计算机中经常会出想并发的问题,并发执行若干个运算任务,更充分利用计算机处理器效能,看起来很简单,但是里面包含处理器与内存交互,线程与线程交互,读取运算数据,储存运算数据,缓存一致性等复杂问题。Java内存模型(JMM)定义程序中各个变量发访问规则,屏蔽了硬件与操作系统的内存访问差异,从而使java程序能供在各种平台达到一致的内存访问效果。

内存间交互操作 数据在主内存和工作内存间的交互细节,JMM通过以下8种操作(具有原子性)完成

JMM规定了上述操作的限制

volatile关键字 被该关键字赋值的变量具有两种特性:

对于实现可见性,java还有final和synchronized可以实现

以下两条规则运算场景可以使用volitaile

long和double类型变量