Module java.base

Class AtomicLongArray

java.lang.Object
java.util.concurrent.atomic.AtomicLongArray
所有已实现的接口:
Serializable

public class AtomicLongArray extends Object implements Serializable
一个可以原子方式更新元素的long数组。查看VarHandle规范以了解原子访问的属性描述。
自 JDK 版本:
1.5
参见:
  • Constructor Details

    • AtomicLongArray

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

      public AtomicLongArray(long[] array)
      创建一个新的AtomicLongArray,其长度与给定数组相同,并且所有元素均从给定数组复制而来。
      参数:
      array - 要从中复制元素的数组
      抛出:
      NullPointerException - 如果数组为null
  • Method Details

    • length

      public final int length()
      返回数组的长度。
      返回:
      数组的长度
    • get

      public final long get(int i)
      返回索引为i的元素的当前值,内存效果由VarHandle.getVolatile(java.lang.Object...)指定。
      参数:
      i - 索引
      返回:
      当前值
    • set

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

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

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

      public final boolean compareAndSet(int i, long expectedValue, long newValue)
      如果元素的当前值== expectedValue,则原子性地将索引为i的元素设置为newValue,具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果。
      参数:
      i - 索引
      expectedValue - 期望的值
      newValue - 新值
      返回值:
      如果成功则返回true。返回false表示实际值不等于期望值。
    • weakCompareAndSet

      @Deprecated(since="9") public final boolean weakCompareAndSet(int i, long expectedValue, long newValue)
      Deprecated.
      This method has plain memory effects but the method name implies volatile memory effects (see methods such as compareAndExchange(int, long, long) and compareAndSet(int, long, long)). To avoid confusion over plain or volatile memory effects it is recommended that the method weakCompareAndSetPlain(int, long, long) be used instead.
      如果元素的当前值== expectedValue,则可能原子性地将索引为i的元素设置为newValue,具有VarHandle.weakCompareAndSetPlain(java.lang.Object...)指定的内存效果。
      参数:
      i - 索引
      expectedValue - 期望的值
      newValue - 新值
      返回值:
      如果成功则返回true
      参见:
    • weakCompareAndSetPlain

      public final boolean weakCompareAndSetPlain(int i, long expectedValue, long newValue)
      如果元素的当前值== expectedValue,则可能原子性地将索引为i的元素设置为newValue,具有VarHandle.weakCompareAndSetPlain(java.lang.Object...)指定的内存效果。
      参数:
      i - 索引
      expectedValue - 期望的值
      newValue - 新值
      返回值:
      如果成功则返回true
      自9起:
      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)
      原子性地更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果)应用给定函数的结果到索引为i的元素,并返回先前的值。该函数应该是无副作用的,因为在尝试更新失败时可能会重新应用。
      参数:
      i - 索引
      updateFunction - 无副作用的函数
      返回值:
      先前的值
      自1.8起:
      1.8
    • updateAndGet

      public final long updateAndGet(int i, LongUnaryOperator updateFunction)
      原子性地更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果)应用给定函数的结果到索引为i的元素,并返回更新后的值。该函数应该是无副作用的,因为在尝试更新失败时可能会重新应用。
      参数:
      i - 索引
      updateFunction - 无副作用的函数
      返回值:
      更新后的值
      自1.8起:
      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起:
      1.8
    • accumulateAndGet

      public final long accumulateAndGet(int i, long x, LongBinaryOperator accumulatorFunction)
      原子性地更新(具有VarHandle.compareAndSet(java.lang.Object...)指定的内存效果)应用给定函数到当前值和给定值的结果到索引为i的元素,并返回更新后的值。该函数应该是无副作用的,因为在尝试更新失败时可能会重新应用。该函数将当前值作为索引为i的元素的第一个参数,并将给定更新作为第二个参数。
      参数:
      i - 索引
      x - 更新值
      accumulatorFunction - 两个参数的无副作用函数
      返回值:
      更新后的值
      自1.8起:
      1.8
    • toString

      public String toString()
      返回数组当前值的字符串表示形式。
      覆盖:
      toString 在类 Object
      返回值:
      数组当前值的字符串表示形式
    • getPlain

      public final long getPlain(int i)
      返回索引为i的元素的当前值,具有读取的内存语义,就好像变量被声明为非volatile
      参数:
      i - 索引
      返回值:
      自9起:
      9
    • setPlain

      public final void setPlain(int i, long newValue)
      将索引为i的元素设置为newValue,具有设置的内存语义,就好像变量被声明为非volatile和非final
      参数:
      i - 索引
      newValue - 新值
      自9起:
      9
    • getOpaque

      public final long getOpaque(int i)
      返回索引为i的元素的当前值,具有VarHandle.getOpaque(java.lang.Object...)指定的内存效果。
      参数:
      i - 索引
      返回值:
      自9起:
      9
    • setOpaque

      public final void setOpaque(int i, long newValue)
      将索引为i的元素设置为newValue,具有VarHandle.setOpaque(java.lang.Object...)指定的内存效果。
      参数:
      i - 索引
      newValue - 新值
      自9起:
      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)
      将索引为i的元素设置为newValue,具有由VarHandle.setRelease(java.lang.Object...)指定的内存效果。
      参数:
      i - 索引
      newValue - 新值
      自版本:
      9
    • compareAndExchange

      public final long compareAndExchange(int i, long expectedValue, long newValue)
      如果元素的当前值(称为见证值== expectedValue,则将索引为i的元素原子设置为newValue,具有由VarHandle.compareAndExchange(java.lang.Object...)指定的内存效果。
      参数:
      i - 索引
      expectedValue - 期望值
      newValue - 新值
      返回:
      见证值,如果成功将与期望值相同
      自版本:
      9
    • compareAndExchangeAcquire

      public final long compareAndExchangeAcquire(int i, long expectedValue, long newValue)
      如果元素的当前值(称为见证值== expectedValue,则将索引为i的元素原子设置为newValue,具有由VarHandle.compareAndExchangeAcquire(java.lang.Object...)指定的内存效果。
      参数:
      i - 索引
      expectedValue - 期望值
      newValue - 新值
      返回:
      见证值,如果成功将与期望值相同
      自版本:
      9
    • compareAndExchangeRelease

      public final long compareAndExchangeRelease(int i, long expectedValue, long newValue)
      如果元素的当前值(称为见证值== expectedValue,则将索引为i的元素原子设置为newValue,具有由VarHandle.compareAndExchangeRelease(java.lang.Object...)指定的内存效果。
      参数:
      i - 索引
      expectedValue - 期望值
      newValue - 新值
      返回:
      见证值,如果成功将与期望值相同
      自版本:
      9
    • weakCompareAndSetVolatile

      public final boolean weakCompareAndSetVolatile(int i, long expectedValue, long newValue)
      如果元素的当前值== expectedValue,则可能将索引为i的元素原子设置为newValue,具有由VarHandle.weakCompareAndSet(java.lang.Object...)指定的内存效果。
      参数:
      i - 索引
      expectedValue - 期望值
      newValue - 新值
      返回:
      true 如果成功
      自版本:
      9
    • weakCompareAndSetAcquire

      public final boolean weakCompareAndSetAcquire(int i, long expectedValue, long newValue)
      如果元素的当前值== expectedValue,则可能将索引为i的元素原子设置为newValue,具有由VarHandle.weakCompareAndSetAcquire(java.lang.Object...)指定的内存效果。
      参数:
      i - 索引
      expectedValue - 期望值
      newValue - 新值
      返回:
      true 如果成功
      自版本:
      9
    • weakCompareAndSetRelease

      public final boolean weakCompareAndSetRelease(int i, long expectedValue, long newValue)
      如果元素的当前值== expectedValue,则可能将索引为i的元素原子设置为newValue,具有由VarHandle.weakCompareAndSetRelease(java.lang.Object...)指定的内存效果。
      参数:
      i - 索引
      expectedValue - 期望值
      newValue - 新值
      返回:
      true 如果成功
      自版本:
      9