2010-05-05 66 views

回答

13

没有,++i实际上是三个指令(负载i,增量,店i)。这绝对不是原子的。

+0

这就是我的想法。读取值,增加值,获得价值。 – Finbarr 2010-05-05 07:17:48

+2

如果'i'被声明为volatile,它甚至不是原子。 – 2010-05-05 07:23:58

6

该++操作不是在Java原子,因为它是由三个操作

  1. 的读取存储的值(原子)
  2. 将一个到它(原子)
  3. 存储值(原子)

所以明确坏事可以

之间发生在的情况下,很长,它甚至更棘手,因为即使读操作本身也不是原子的。

我找到了一个很好的一篇文章,谈到了内存模型

http://www.vogella.de/articles/JavaConcurrency/article.html#memorymodel_atomic

相关问题