与内存间的交互
Java内存中定义了以下8种操作,来完成一个变量如何从主内存拷贝到工作内存、如何从工作内存同步回主内存之间的实现细节,其中虚拟机实现保证下面的的每种操作都是原子的、不可再分的。
Lock
作用于主内存的变量,它把一个变量标识为一条线程独占的状态。
Unlock
作用于主内存的变量,它把一个变量从锁定状态释放,这时可以被其它
线程锁定。
Read
作用于主内存变量,它把一个变量的值从主内存传输到线程的工作内存
中,以便随后的load动作使用。
Load
作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工
作内存的变量副本中。
Use
作用于工作内存的变量,它把工作内存中一个变量的值传递给执行引擎,
每当虚拟机遇到一个需要使用到变量的值的字节码指令时将会执行这个
操作。
Assign
作用于工作内存的变量,它把一个从执行引擎接收到的的值赋值给
工作内存的变量,每当虚拟机遇到一个给变量赋值的字节码指令时
执行这个操作。
Store
作用于工作内存的变量,它把工作内存中一个变量的值传送到主内
存中,以便后面的write操作使用。
Write
作用于主内存的变量,它把store操作从工作内存中得到的变量值 放
入主内存的变量中