JVM内存模型 交互
线程和主存的交互,Java内存模型定义了8种操作1:这些操作都是原子的(double和long类型有例外):
- use:变量从工作内存传递给执行引擎。每当虚拟机线程遇到一个需要使用到变量的值的字节码指令时将会执行这个操作;
- assign:把一个从执行引擎接收到的值复制给工作内存的变量。每当虚拟机遇到一个给变量赋值的字节码指令时执行这个操作;
- read:把一个变量的值从主内存拷贝到工作内存,以便为随后的load动作使用;
- load:把read操作从主内存获取的变量值放入工作空间的副本中;
- store:把工作内存中的变量值传送到主内存中,为后续的write操作使用;
- write:把store操作从工作内存得到的变量的值放入主内存的变量中;
- lock:把一个变量标识为线程独占状态;
- unlock:释放线程独占的变量。