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操作将值写入主内存,这样解释,你应该能更清楚各个操作的含义,也能更清楚线程不安全的发生。00
相似问题