Module  java.base

Class AtomicLongArray

  • All Implemented Interfaces:
    Serializable


    public class AtomicLongArray
    extends Object
    implements Serializable
    其中元素可以原子更新的long数组。 有关原子访问属性的说明,请参阅VarHandle规范。
    从以下版本开始:
    1.5
    另请参见:
    Serialized Form
    • 构造方法详细信息

      • AtomicLongArray

        public AtomicLongArray​(int length)
        创建给定长度的新AtomicLongArray,所有元素最初为零。
        参数
        length - 数组的长度
      • AtomicLongArray

        public AtomicLongArray​(long[] array)
        创建一个与原始数组相同长度的新的AtomicLongArray,并复制所有元素。
        参数
        array - 从中复制元素的数组
        异常
        NullPointerException - 如果数组为空
    • 方法详细信息

      • length

        public final int length​()
        返回数组的长度。
        结果
        数组的长度
      • set

        public final void set​(int i,
                              long newValue)
        将索引 inewValue的元素设置为 newValue ,具有 VarHandle.setVolatile(java.lang.Object...)指定的内存效果。
        参数
        i - 索引
        newValue - 新价值
      • lazySet

        public final void lazySet​(int i,
                                  long newValue)
        将索引 inewValue的元素设置为 newValue ,具有 VarHandle.setRelease(java.lang.Object...)指定的内存效果。
        参数
        i - 索引
        newValue - 新值
        从以下版本开始:
        1.6
      • getAndSet

        public final long getAndSet​(int i,
                                    long newValue)
        将索引 inewValue的元素原子设置为 newValue并返回具有 VarHandle.getAndSet(java.lang.Object...)指定的内存效果的旧值。
        参数
        i - 索引
        newValue - 新值
        结果
        以前的值
      • compareAndSet

        public final boolean compareAndSet​(int i,
                                           long expectedValue,
                                           long newValue)
        如果元素的当前值 == expectedValue具有 VarHandle.compareAndSet(java.lang.Object...)指定的内存效果,则将索引 inewValue的元素原子设置为 newValue
        参数
        i - 索引
        expectedValue - 预期值
        newValue - 新值
        结果
        true如果成功。 False return表示实际值不等于预期值。
      • weakCompareAndSetPlain

        public final boolean weakCompareAndSetPlain​(int i,
                                                    long expectedValue,
                                                    long newValue)
        如果元素的当前值为 == expectedValue ,具有由 VarHandle.weakCompareAndSetPlain(java.lang.Object...)指定的记忆效应,则可以将索引 inewValue的元素原子设置为 newValue
        参数
        i - 索引
        expectedValue - 预期值
        newValue - 新值
        结果
        true如果成功
        从以下版本开始:
        9
      • getAndIncrement

        public final long getAndIncrement​(int i)
        原子递增元件的索引值i如通过指定,记忆效应VarHandle.getAndAdd(java.lang.Object...)

        相当于getAndAdd(i, 1)

        参数
        i - 索引
        结果
        以前的值
      • getAndDecrement

        public final long getAndDecrement​(int i)
        原子递减元件的索引值i如通过指定,记忆效应VarHandle.getAndAdd(java.lang.Object...)

        相当于getAndAdd(i, -1)

        参数
        i - 索引
        结果
        以前的值
      • getAndAdd

        public final long getAndAdd​(int i,
                                    long delta)
        原子地将给定的值添加到索引号为 i的元素,具有由 VarHandle.getAndAdd(java.lang.Object...)指定的记忆效应。
        参数
        i - 索引
        delta - 要添加的值
        结果
        以前的值
      • incrementAndGet

        public final long incrementAndGet​(int i)
        原子递增元件的索引值i如通过指定,记忆效应VarHandle.getAndAdd(java.lang.Object...)

        相当于addAndGet(i, 1)

        参数
        i - 索引
        结果
        更新的值
      • decrementAndGet

        public final long decrementAndGet​(int i)
        原子递减元件的索引值i如通过指定,记忆效应VarHandle.getAndAdd(java.lang.Object...)

        相当于addAndGet(i, -1)

        参数
        i - 指数
        结果
        更新的值
      • addAndGet

        public long addAndGet​(int i,
                              long delta)
        原子地将给定值添加到索引号为 i的元素,具有由 VarHandle.getAndAdd(java.lang.Object...)指定的内存效果。
        参数
        i - 索引
        delta - 要添加的值
        结果
        更新的值
      • getAndUpdate

        public final long getAndUpdate​(int i,
                                       LongUnaryOperator updateFunction)
        使用索引i的元素与应用给定函数的结果进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),返回上一个值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。
        参数
        i - 索引
        updateFunction - 无副作用的功能
        结果
        以前的值
        从以下版本开始:
        1.8
      • updateAndGet

        public final long updateAndGet​(int i,
                                       LongUnaryOperator updateFunction)
        使用索引i的元素与应用给定函数的结果进行原子更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),返回更新的值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。
        参数
        i - 索引
        updateFunction - 无副作用的功能
        结果
        更新的值
        从以下版本开始:
        1.8
      • getAndAccumulate

        public final long getAndAccumulate​(int i,
                                           long x,
                                           LongBinaryOperator accumulatorFunction)
        原子更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效应)索引号为i的元素,并将给定函数应用于当前值和给定值,返回上一个值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。 该函数以索引i作为其第一个参数的元素的当前值应用,给定更新作为第二个参数。
        参数
        i - 索引
        x - 更新值
        accumulatorFunction - 两个参数的无效副作用
        结果
        以前的值
        从以下版本开始:
        1.8
      • accumulateAndGet

        public final long accumulateAndGet​(int i,
                                           long x,
                                           LongBinaryOperator accumulatorFunction)
        将索引号为i的元素原子更新(由VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),并将给定的函数应用于当前值和给定值,返回更新后的值。 该功能应该是无副作用的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。 该函数应用索引ii的元素的当前值作为其第一个参数,给定更新作为第二个参数。
        参数
        i - 指数
        x - 更新值
        accumulatorFunction - 两个参数的无效副作用
        结果
        更新的值
        从以下版本开始:
        1.8
      • toString

        public String toString​()
        返回数组的当前值的String表示形式。
        重写:
        toStringObject
        结果
        数组的当前值的String表示形式
      • getPlain

        public final long getPlain​(int i)
        返回索引号为 i的元素的当前值,读取的内存语义就好像变量被声明为非 volatile
        参数
        i - 指数
        结果
        价值
        从以下版本开始:
        9
      • setPlain

        public final void setPlain​(int i,
                                   long newValue)
        将索引 inewValue的元素设置为 newValue ,其内存语义设置为该变量被声明为非 volatile final
        参数
        i - 索引
        newValue - 新值
        从以下版本开始:
        9
      • getOpaque

        public final long getOpaque​(int i)
        返回索引号为 i的元素的当前值,由 VarHandle.getOpaque(java.lang.Object...)指定的内存效果。
        参数
        i - 索引
        结果
        价值
        从以下版本开始:
        9
      • setOpaque

        public final void setOpaque​(int i,
                                    long newValue)
        将索引 inewValue的元素设置为 newValue ,具有 VarHandle.setOpaque(java.lang.Object...)指定的内存效果。
        参数
        i - 索引
        newValue - 新值
        从以下版本开始:
        9
      • getAcquire

        public final long getAcquire​(int i)
        返回索引号为 i的元素的当前值,具有由 VarHandle.getAcquire(java.lang.Object...)指定的内存效果。
        参数
        i - 索引
        结果
        价值
        从以下版本开始:
        9
      • setRelease

        public final void setRelease​(int i,
                                     long newValue)
        将索引 inewValue的元素设置为 newValue ,具有 VarHandle.setRelease(java.lang.Object...)指定的内存效果。
        参数
        i - 索引
        newValue - 新值
        从以下版本开始:
        9
      • compareAndExchange

        public final long compareAndExchange​(int i,
                                             long expectedValue,
                                             long newValue)
        如果元素的当前值,被称为 见证值 == expectedValue ,具有由 VarHandle.compareAndExchange(java.lang.Object...)指定的记忆效应, == expectedValue索引 inewValue的元素原子设置为 i
        参数
        i - 索引
        expectedValue - 期望值
        newValue - 新值
        结果
        见证价值,如果成功,将与预期价值相同
        从以下版本开始:
        9
      • compareAndExchangeAcquire

        public final long compareAndExchangeAcquire​(int i,
                                                    long expectedValue,
                                                    long newValue)
        如果元素的当前值,称为 见证值 == expectedValue ,具有由 VarHandle.compareAndExchangeAcquire(java.lang.Object...)指定的记忆效应, == expectedValue索引 inewValue的元素原子设置为 newValue
        参数
        i - 索引
        expectedValue - 预期值
        newValue - 新值
        结果
        见证价值,如果成功,将与预期价值相同
        从以下版本开始:
        9
      • compareAndExchangeRelease

        public final long compareAndExchangeRelease​(int i,
                                                    long expectedValue,
                                                    long newValue)
        如果元素的当前值(称为 见证值 == expectedValue )具有由 VarHandle.compareAndExchangeRelease(java.lang.Object...)指定的记忆效应, == expectedValue索引 inewValue的元素原子设置为 newValue
        参数
        i - 索引
        expectedValue - 期望值
        newValue - 新值
        结果
        见证价值,如果成功,将与预期价值相同
        从以下版本开始:
        9
      • weakCompareAndSetVolatile

        public final boolean weakCompareAndSetVolatile​(int i,
                                                       long expectedValue,
                                                       long newValue)
        如果元素的当前值为 == expectedValue ,具有 VarHandle.weakCompareAndSet(java.lang.Object...)指定的记忆效应,则可以将索引 inewValue的元素原子设置为 newValue
        参数
        i - 索引
        expectedValue - 预期值
        newValue - 新值
        结果
        true如果成功
        从以下版本开始:
        9
      • weakCompareAndSetAcquire

        public final boolean weakCompareAndSetAcquire​(int i,
                                                      long expectedValue,
                                                      long newValue)
        如果元素的当前值为 == expectedValue ,具有由 VarHandle.weakCompareAndSetAcquire(java.lang.Object...)指定的记忆效应,则可以原子地将索引 inewValue的元素设置为 newValue
        参数
        i - 指数
        expectedValue - 预期值
        newValue - 新值
        结果
        true如果成功
        从以下版本开始:
        9
      • weakCompareAndSetRelease

        public final boolean weakCompareAndSetRelease​(int i,
                                                      long expectedValue,
                                                      long newValue)
        如果元素的当前值为 == expectedValue ,具有由 VarHandle.weakCompareAndSetRelease(java.lang.Object...)指定的记忆效应,则可以将索引 inewValue的元素原子地设置为 newValue
        参数
        i - 索引
        expectedValue - 期望值
        newValue - 新值
        结果
        true如果成功
        从以下版本开始:
        9