CAS之Atomic包
updateAndGet实现原理demo
public static int updateAndGet(AtomicInteger i, IntUnaryOperator operator) {
while (true) {
// 获取当前值
int prev = i.get();
// 计算值
int next = operator.applyAsInt(prev);
// 比较并交换, 成功则返回, 不成功则自旋重试
if (i.compareAndSet(prev, next)) {
return next;
}
}
}