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