【发布时间】:2012-05-18 11:00:00
【问题描述】:
我有一个需要澄清的并发程序。第一个程序被认为是原子的,而第二个不是。
注意:// 在这里并不表示 cmets - 它们的意思是它是另一个进程与另一个进程同时执行。
这是第一个:
int x = 0, y = 0;
co
x = y + 1; // y = y + 1;
oc
上面的程序可以看作是原子的——但我不明白为什么会这样。但是下一个程序不是。
int x = 0, y = 0;
co
x = y + 1; // y = x + 1;
oc
我知道原子动作是一种编程指令,它可以不可分割地改变计算机系统的状态,并且我也知道从寄存器中加载和存储值是典型的原子动作。那么上面发生了什么?
【问题讨论】:
-
@Keyser:阅读所有内容 - 这些不是 cmets
-
你真的应该强调你的最后一行
-
@MichaelBorgwardt 是的,我明白了。
标签: java concurrency atomic