Jok*_*ker 7 java atomic compare-and-swap atomicinteger java-9
在研究 AtomicInteger 时,我发现这个 API 提供了两种方法。
比较和交换:
如果当前值(称为见证值)==预期值,则以原子方式将该值设置为 newValue,并具有由以下指定的记忆效应
VarHandle.compareAndExchange(java.lang.Object...)
比较并设置:
以原子方式将该值设置为
newValue当前值value == expectedValue,并具有由 指定的记忆效应VarHandle.compareAndSet(java.lang.Object...)。
我无法理解两者之间的区别,请帮助提供合适的例子。
Era*_*ran 12
这两个方法有不同的返回类型。
\n\ncompareAndSet返回boolean:
\n\n\n如果成功则为 true。返回 False 表示实际值不等于期望值。
\n
compareAndExchange返回一个int:
\n\n\n见证值,如果成功则与期望值相同
\n
iecompareAndSet表示变量的值是否被更新,而compareAndExchange返回变量的当前值,这为您提供了更多信息。
compareAndSet(1,2)2如果先前的值为,则将原子整数的值设置为1,并且在这种情况下返回true。否则,它不会设置该值,并且会返回false。
compareAndExchange\xe2\x80\x8b(1,2)2如果先前的值为,则将原子整数的值设置为1,并且在这种情况下返回1。如果先前的值不是1,则不会设置该值,并将返回当前(未更改的)值。
| 归档时间: |
|
| 查看次数: |
3441 次 |
| 最近记录: |