這兩個等值嗎?換句話說,++和 - 運算符是原子的嗎?Java int concurrency ++ int相當於AtomicInteger.incrementAndGet()?
int i = 0;
return ++i;
AtomicInteger ai = new AtomicInteger(0);
return ai.incrementAndGet();
這兩個等值嗎?換句話說,++和 - 運算符是原子的嗎?Java int concurrency ++ int相當於AtomicInteger.incrementAndGet()?
int i = 0;
return ++i;
AtomicInteger ai = new AtomicInteger(0);
return ai.incrementAndGet();
沒有,++i
實際上是三個指令(負載i
,增量,店i
)。這絕對不是原子的。
該++操作不是在Java原子,因爲它是由三個操作
所以明確壞事可以
之間發生在的情況下,很長,它甚至更棘手,因爲即使讀操作本身也不是原子的。
我找到了一個很好的一篇文章,談到了內存模型
http://www.vogella.de/articles/JavaConcurrency/article.html#memorymodel_atomic
這就是我的想法。讀取值,增加值,獲得價值。 – Finbarr 2010-05-05 07:17:48
如果'i'被聲明爲volatile,它甚至不是原子。 – 2010-05-05 07:23:58