美文网首页
一起读读JAVA源码-Atomic

一起读读JAVA源码-Atomic

作者: yuzl | 来源:发表于2018-07-17 15:51 被阅读5次

AtomicBoolean

private static final Unsafe unsafe = Unsafe.getUnsafe();
private static final long valueOffset;
private volatile int value;

AtomicInteger

private static final Unsafe unsafe = Unsafe.getUnsafe();
private static final long valueOffset;
private volatile int value;

解释

核心操作类Unsafe,JAVA提供工具类
unsafe.objectFieldOffset获得对象内存地址
unsafe.compareAndSwapInt native方法,比较并替换。原子性的操作

AtomicBoolean.compareAndSet(false,true);

public final boolean compareAndSet(boolean expect, boolean update) {
        int e = expect ? 1 : 0;
        int u = update ? 1 : 0;
        return unsafe.compareAndSwapInt(this, valueOffset, e, u);
    }

AtomicInteger.incrementAndGet();

public final int incrementAndGet() {
        for (;;) {
            int current = get();
            int next = current + 1;
            if (compareAndSet(current, next))
                return next;
        }
    }

相关文章

网友评论

      本文标题:一起读读JAVA源码-Atomic

      本文链接:https://www.haomeiwen.com/subject/frcgpftx.html