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