12.1 Java内存模型

java内存模型的主要目标是定义程序中各个变量的访问规则。(这里的变量不是局部变量表,因为局部变量表是线程私有的,不共享,也不存在竞争问题)。

  1. java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存(相当于高速缓冲区)线程对变量的所有操作都要经过直接内存,不能直接访问主内存,如下图所示
    12.1 Java内存模型
  2. 内存间的交互操作
    总共有八种
    1)lock:作用于主内存的变量
    2)unlock:作用域主内存的变量
    3)read:作用于主内存的变量
    4)load:作用域工作内存的变量
    5)use:作用于工作内存的变量,把工作内存中的变量传递给执行引擎。
    6)assign(赋值):作用于工作内存的变量,把执行引擎获取到的值赋值给工作内存中的变量
    7)store(存储):作用于工作内存的变量,把工作内存中的一个值传递给主内存,配合write使用
    8)write:作用与主内存,把从工作内存store接收到的值存入主内存