底层原理:自旋锁
Unsafe类 调用操作系统底层资源执行任务
valueOffset = unsafe.objectFieldOffset (AtomicInteger.class.getDeclaredField("value"));
像C的指针一样直接操锁内存
unsafe.getAndAddInt(this,valueOffset,1);
this:当前对象
valueOffset:内存偏移量
public final int getAndAddInt(Obj var1,long,v2,int v4) {
int var5;
do{
var5=this.getIntVolatile(var1,v2);
}while(!this.compareAndSwapInt(v1,v2,v5,v5+v4));
return var5
}
rt.jar/sun/misc/Unsafe.class
CAS是CPU并发原语,偏硬件,保证原子性