首页 > 科技 >

这样看java内存模型其实很简单(3)

2018-09-14 19:09:40 网络整理 阅读:63 评论:0

use CPU使用工作内存中变量需要执行use操作,是定义在工作内存中的一种操作

assign 赋值操作,显而意见,如果发生变量赋值操作,将执行该原子原子操作,是定义在工作内存中的操作。

store 该操作和load操作是对应的操作,完成工作内存中内容向主内存中内容的转移。

write writer操作逻辑上发生在store操作之后,完成对主内容变量的回写。store操作和write操作是load和read操作的对称操作。 JVM定义的上述八种操作均是原子的,是最小操作单位,,不可分割。 除此之外, 上述八个操作并不是孤立的,而是相互联系的,它们之间的操作必须符合下述规则:

(1) 对主内存中某个变量执行lock操作,将会清空工作内存中该变量值。对变量执行unlock操作之前,必须将其同步到主内存中(store,write)。

(2)工作内存中的变量如未经过assgin操作,那么不允许同步到主内存中。

(3)load和read操作必须顺序执行,但不一定需要连续执行。store和write操作也必须顺序执行,但不一定需要连续执行。上述两对操作必须形成闭环,不能只有load操作而没有read操作。 上述的八个原子操作和相应的交互规则就是JVM对内存的访问规则,掌握和理解这些规则对开发正确的多线程程序十分重要

相关文章