Read是从主内存读取到工作内存,Load的作用是将变量加载到哪里啊?这个地方没有理解。同理Store和Write的关系不太理解

来源:1-5 JAVA内存模型

慕粉3796861

2019-05-26

写回答

1回答

Jimin

2019-05-26

read(读取):作用于主内存的变量,它把一个变量的值从主内存传输到线程的工作内存中,以便随后的load动作使用。
load(载入):作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工作内存的变量副本中
store(存储):作用于工作内存的变量,它把工作内存中一个变量的值传送到主内存中,以便随后的write操作使用。
write(写入):作用于主内存的变量,它把store操作从工作内存中得到的变量的值放入主内存的变量中。
如果要把一个变量从主内存复制到工作内存,那就要顺序地执行read和load操作,如果要把变量从工作内存同步回主内存,就要顺序地执行store和write操作。这里很关键的一个点是,read与load之间、store与write之间是可插入其他指令的。课程里我们演示的count+1操作,每次执行count++操作时,对于一个线程而言,必须经过read从主存读取,然后再load到工作内存,再执行count=count+1时,先将更新后的值经过store传到主内存,然后执行write操作将值写入主内存,这样解释,你应该能更清楚各个操作的含义,也能更清楚线程不安全的发生。

0
0

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程