上一节,我们介绍了线程与Java内存模型之间的关系。这一节,我们将会介绍内存间交互操作,主要是Java内存与各线程之间的关系。也就是说一个变量如何从主内存拷贝到工作内存、如何让从工作内存同步回主内存之类的实现细节。
首先,我们需要了解下面8种操作。
lock(锁定):作用于主内存的变量;它把这一个变量标识为一个线程独占的状态。
unlock(解锁):作用域主内存的变量,把一个变量释放。
read(读取):作用于主内存的变量,把一个变量的值从主内存传输到工作内存中,以便随后的load动作使用。
load(载入):作用于工作内存变量,它把read曹祖从主内存中得到的变量值放入工作内存的变量副本中。
use(适应):作用于工作内存的变量,把工作内存中一个变量的值传递给执行引擎,每当虚拟机遇到一个需要使用到变量的值的字节码指令时将会执行这个操作。
assign(赋值):作用于工作内存的变量,把一个执行引擎接收到值赋给工作的变量,每当虚拟机遇到一个给变量赋值的字节码指令时执行这个操作。
store(存储):作用域工作内存的变量,它把工作内存中一个变量的值传递到主内存,以便随后的write操作。
write(写入):作用于主内存的变量,它把store操作从工作内存得到的变量的值放入主内存的变量中。
对于以上的8种操作,read和load、store和write操作需要成对出现。
扫描二维码关注公众号,回复:
156821 查看本文章