【发布时间】:2015-09-09 02:06:46
【问题描述】:
我正在尝试理解Java Memory Model,但我在操作方面遇到了一些麻烦。我理解动作的定义为t, k, v, u>,但我不太明白程序是如何分解成动作的,以及这些动作有多抽象。
我的第一个假设是动作是原子的。 var1 = var2 将分为两个动作 - 读取 var2 和写入 var1,但一个示例 here 表明 var1 = var2 本身就是一个动作。所以每个动作对应源码中的一条语句。
这如何与 if 语句一起使用?例如,如果我们有if(r1 == r2 && r3 == r4) { ... },整个语句会是一个动作,还是分成多个动作(如果是,相应的动作如何保持“连接”作为 if 语句)?
【问题讨论】:
标签: java concurrency memory-model java-memory-model