此操作是原子操作还是之间存在数据竞争的可能性?
atomicInteger.set(-atomicInteger.get());
如果存在数据竞争,如何原子地否定 AtomicInteger
?
最佳答案
我会这样做
public int getAndNegate(AtomicInteger i) {
for (;;) {
int current = i.get();
int next = -current;
if (i.compareAndSet(current, next))
return current;
}
}
关于java - AtomicInteger 的嵌套方法调用在 java 中也是原子的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19205042/