java.util.concurrent.atomic.AtomicInteger#compareAndSet
public final boolean compareAndSet(int expect, int update) {
return unsafe.compareAndSwapInt(this, valueOffset, expect, update);
}
static {
try {
valueOffset = unsafe.objectFieldOffset
(AtomicInteger.class.getDeclaredField("value"));
} catch (Exception ex) { throw new Error(ex); }
}
直接看上面的代码,是AtomicInteger使用cas的一个例子
cas四个参数(如果对象的属性值与期望值expect一样,则更新属性的值为update并返回true
- 对象
- 该对象要比较的属性的偏移量
- 期望值 expect
- 要更新成为的值 update