//AtomicInteger的自增方法
public final int getAndIncrement() {
return unsafe.getAndAddInt(this, valueOffset, 1);
}
//Unsafe下的方法
public final int getAndAddInt(Object var1, long var2, int var4) {
int var5;
//内存中的值和旧值通过compareAndSwapInt方法进行比较,
//比较成功则将新值与内存中的值进行交换,比较失败则循环重新获取值再比较交换
do {
var5 = this.getIntVolatile(var1, var2);
} while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));
return var5;
}
CAS(比较并交换)是指令级的操作,只有一步原子操作,所以非常快。而且CAS避免了请求操作系统来裁定锁的问题,不用麻烦操作系统,直接在CPU内部就搞定了。CAS也是存在开销的,也被称为轻量级锁。unsafe.getAndAddInt(this, valueOffset, 1)方法进行比较,do-while进行自旋//AtomicInteger的自增方法public final int getAndIncrement() { return unsafe.getAndAddInt(thi.