自旋锁的概念,以及举例;

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失败是,循环去获取内存值;

你可能感兴趣的:(自旋锁的概念,以及举例;)