我知道compareAndSet()
in是一个核心方法,它采用一种巧妙的方法来原子地更新封装AtomicInteger
的整数原语的当前值。AtomicInteger
它只有在确定另一个线程尚未更新它之后才会这样做,如果它检测到其他情况则放弃。
另外,我知道,AtomicInteger
Java API 文档中标记为“原子”的方法在内部调用compareAndSet()
.
在表达了 in 的必要性之后compareAndSet()
,AtomicInteger
我的问题是:
- 为什么
weakCompareAndSet()
存在于AtomicInteger
?为什么我会选择在compareAndSet()
可用时使用它?根据 Java API,它可能会虚假失败并且不提供订购保证,因此很少是 . 的合适替代方案
compareAndSet
。
- 为什么
- 令人惊讶的是, 中有一个 raw
set()
方法AtomicInteger
,它甚至没有标记为 atomic!它在课堂上做什么AtomicInteger
?!
- 令人惊讶的是, 中有一个 raw