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