编程语言
首页 > 编程语言> > java – AtomicBoolean.set(flag)和AtomicBoolean.compareAndSet(!flag,flag)有什么区别?

java – AtomicBoolean.set(flag)和AtomicBoolean.compareAndSet(!flag,flag)有什么区别?

作者:互联网

我想知道在调用之间是否存在任何差异(或可能的副作用):

AtomicBoolean.set(true)

AtomicBoolean.compareAndset(false, true)

AtomicBoolean #set的JavaDoc状态:

Unconditionally sets to the given value.

而AtomicBoolean#compareAndSet指出:

Atomically sets the value to the given updated value if the current value == the expected value.

在这两种情况下,该值都将设置为true.那么区别是什么呢?

解决方法:

如果值已经为true,compareAndset(false,true)将返回false.
它实际上相当于!getAndSet(true).

标签:java,java-util-concurrent,compare-and-swap
来源: https://codeday.me/bug/20190713/1450537.html