spinlock,自旋锁,
是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的小伙,缺点是循环会消耗cpu
用循环的方式代替阻塞;
jdk源码中有对应的列子;
unsafe类中的;
public final int getAndAddInt(Object var1, long var2, int var4) {
int var5;
do {
var5 = this.getIntVolatile(var1, var2);
} while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));
return var5;
}
当 cas失败是,循环去获取内存值;