在研究 AtomicInteger 时,我发现这个 API 提供了两种方法。
比较和交换:
如果当前值(称为见证值)== expectedValue(具有由
VarHandle.compareAndExchange(java.lang.Object...)
比较安集:
以原子方式将值设置为
newValue
if 当前value == expectedValue
,具有由 指定的记忆效果VarHandle.compareAndSet(java.lang.Object...)
。
我无法理解两者之间的区别,请提供合适的示例。