有什么区别呢?



你能给我解释一下这两者的区别吗

i.compareAndSet(i.get(), i.get() + 1)

int s = i.get();
int nextS = s + 1;
i.compareAndSet(s, nextS);

,其中iAtomicInteger。如果我想获得i的增量值,第一种方法是错误的,我是对的吗?但我不能解释为什么。

第一种方法两次调用i.get()。由于这里没有锁,两个调用可能返回不同的值,这可能不是您所期望的。

我想要得到int 的下一个值

那么你可能根本不想要compareAndSet,你想要updateAndGet:

updated = i.updateAndGet(value -> value + 1);

getAndUpdate,如果您想要更新之前的值:

previous = i.getAndUpdate(value -> value + 1);

相关内容

  • 没有找到相关文章

最新更新