美文网首页
AtomicInteger 源码分析

AtomicInteger 源码分析

作者: 王兴岭 | 来源:发表于2020-08-24 11:19 被阅读0次
private static final Unsafe unsafe = Unsafe.getUnsafe();
   // value字段的偏移量
    private static final long valueOffset;

    static {
        try {
           //获取value字段的偏移量
            valueOffset = unsafe.objectFieldOffset
                (AtomicInteger.class.getDeclaredField("value"));
        } catch (Exception ex) { throw new Error(ex); }
    }
   //volatile修饰value从而保证value值的线程可见性
    private volatile int value;

    public AtomicInteger(int initialValue) {
        value = initialValue;
    }
 public final int incrementAndGet() {
        return unsafe.getAndAddInt(this, valueOffset, 1) + 1;
 }

//Unsafe源码
  public final int getAndAddInt(Object var1, long var2, int var4) {
    int var5;
    do {
      //通过字段的内存地址获取最新的值
      var5 = this.getIntVolatile(var1, var2);
                   //CAS更新新值,如果失败重试
    } while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));
    return var5;
  }

var1,var2联合定位字段的内存地址

compareAndSwapInt 是CAS操作更新新值,当compareAndSwapInt失败,do代码块会再次执行,获取最新的值var5,然后重新执行compareAndSwapInt,直至成功为止.

相关文章

  • AtomicInteger源码分析

    在Java的多线程开发中需要做一些同步的操作。在java concurrent库中提供了一系列支持原子操作的类,在...

  • AtomicInteger源码分析

    **AtomicInteger** 是Java提供的原子操作类,其内部通过 **UnSafe** 工具类,使用 =...

  • AtomicInteger 源码分析

    var1,var2联合定位字段的内存地址 compareAndSwapInt 是CAS操作更新新值,当compar...

  • AtomicInteger 源码分析阅读

    序 阅读java源码可能是每一个java程序员的必修课,只有知其所以然,才能更好的使用java,写出更优美的程序,...

  • 源码分析之AtomicInteger

    AtomicInteger是java.util.concurrent.atomic包下的类,作用是提供原子操作In...

  • AtomicInteger 源码

    基础介绍 将内存值V修改为B,否则什么都不做。 CAS操作 CAS通过调用JNI的代码实现的。JNI:Java N...

  • 21.AtomicInteger、AtomicLong

    加减: 源码: U是Unsafe的对象。AtomicInteger的 getAndIncrement() 方法和 ...

  • CAS(Compare And Swap)神秘面纱(2)

    上一章中初步接触到了CAS的基础类AtomicInteger,那接下面我们要从源码角度分析内部如何保证安全的进行多...

  • 并发:AtomicInteger 源码

    Java中的AtomicInteger大家应该很熟悉,它是为了解决多线程访问Integer变量导致结果不正确所设计...

  • JDK源码 -- AtomicInteger

    一、概念 类定义: 继承了Number抽象类,说明是个数字类型。 实现了Serializable接口,可以进行序列...

网友评论

      本文标题:AtomicInteger 源码分析

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