Java同步锁

2018-01-09  本文已影响0人  maven_hz

Synchronized 和CAS机制

private static final long valueOffset;

    static {
        try {
            valueOffset = unsafe.objectFieldOffset
                (AtomicInteger.class.getDeclaredField("value"));
        } catch (Exception ex) { throw new Error(ex); }
    }

public final boolean compareAndSet(int expect, int update) {
        return unsafe.compareAndSwapInt(this, valueOffset, expect, update);
    }

这里涉及到两个重要的对象,一个是unsafe,一个是valueOffset。unsafe为我们提供了硬件级别的原子操作,硬件级别的操作又称为原语操作,是顺序执行的。valueOffset为value变量的内存地址。

上一篇 下一篇

猜你喜欢

热点阅读