Module java.base

Class AtomicLong

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

public class AtomicLong extends Number implements Serializable
一个可以被原子方式更新的long值。查看 VarHandle规范以了解原子访问属性的描述。一个AtomicLong在应用中用于原子递增的序列号等,不能用作Long的替代。但是,这个类扩展了Number,以允许工具和实用程序对基于数字的类进行统一访问。
自JDK版本:
1.5
参见:
  • Constructor Details

    • AtomicLong

      public AtomicLong(long initialValue)
      创建一个给定初始值的新AtomicLong。
      参数:
      initialValue - 初始值
    • AtomicLong

      public AtomicLong()
      创建一个初始值为0的新AtomicLong。
  • Method Details

    • get

      public final long get()
      返回当前值,使用VarHandle.getVolatile(java.lang.Object...)指定的内存效果。
      返回:
      当前值
    • set

      public final void set(long newValue)
      将值设置为newValue,使用VarHandle.setVolatile(java.lang.Object...)指定的内存效果。
      参数:
      newValue - 新值
    • lazySet

      public final void lazySet(long newValue)
      设置值为newValue,具有由VarHandle.setRelease(java.lang.Object...)指定的内存效果。
      参数:
      newValue - 新值
      自 JDK 版本:
      1.6
    • getAndSet

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

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

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

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

      public final long getAndIncrement()
      原子地增加当前值,具有由VarHandle.getAndAdd(java.lang.Object...)指定的内存效果。

      等同于getAndAdd(1)

      返回值:
      先前的值
    • getAndDecrement

      public final long getAndDecrement()
      原子地减少当前值,具有由VarHandle.getAndAdd(java.lang.Object...)指定的内存效果。

      等同于getAndAdd(-1)

      返回值:
      先前的值
    • getAndAdd

      public final long getAndAdd(long delta)
      将给定值原子地添加到当前值,具有由VarHandle.getAndAdd(java.lang.Object...)指定的内存效果。
      参数:
      delta - 要添加的值
      返回值:
      先前的值
    • incrementAndGet

      public final long incrementAndGet()
      原子地增加当前值,具有由VarHandle.getAndAdd(java.lang.Object...)指定的内存效果。

      等同于addAndGet(1)

      返回值:
      更新后的值
    • decrementAndGet

      public final long decrementAndGet()
      原子地减少当前值,具有由VarHandle.getAndAdd(java.lang.Object...)指定的内存效果。

      等同于addAndGet(-1)

      返回值:
      更新后的值
    • addAndGet

      public final long addAndGet(long delta)
      将给定值原子地添加到当前值,具有由VarHandle.getAndAdd(java.lang.Object...)指定的内存效果。
      参数:
      delta - 要添加的值
      返回值:
      更新后的值
    • getAndUpdate

      public final long getAndUpdate(LongUnaryOperator updateFunction)
      原子地更新当前值(具有由VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),使用给定函数的结果返回先前的值。该函数应无副作用,因为在由于线程之间的争用而导致的尝试更新失败时,可能会重新应用该函数。
      参数:
      updateFunction - 无副作用的函数
      返回值:
      先前的值
      自 JDK 版本:
      1.8
    • updateAndGet

      public final long updateAndGet(LongUnaryOperator updateFunction)
      原子地更新当前值(具有由VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),使用给定函数的结果返回更新后的值。该函数应无副作用,因为在由于线程之间的争用而导致的尝试更新失败时,可能会重新应用该函数。
      参数:
      updateFunction - 无副作用的函数
      返回值:
      更新后的值
      自 JDK 版本:
      1.8
    • getAndAccumulate

      public final long getAndAccumulate(long x, LongBinaryOperator accumulatorFunction)
      原子地更新当前值(具有由VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),使用将给定函数应用于当前值和给定值的结果返回先前的值。该函数应无副作用,因为在由于线程之间的争用而导致的尝试更新失败时,可能会重新应用该函数。该函数将当前值作为第一个参数,将给定更新作为第二个参数应用。
      参数:
      x - 更新值
      accumulatorFunction - 两个参数的无副作用函数
      返回值:
      先前的值
      自 JDK 版本:
      1.8
    • accumulateAndGet

      public final long accumulateAndGet(long x, LongBinaryOperator accumulatorFunction)
      原子地更新当前值(具有由VarHandle.compareAndSet(java.lang.Object...)指定的内存效果),使用将给定函数应用于当前值和给定值的结果返回更新后的值。该函数应无副作用,因为在由于线程之间的争用而导致的尝试更新失败时,可能会重新应用该函数。该函数将当前值作为第一个参数,将给定更新作为第二个参数应用。
      参数:
      x - 更新值
      accumulatorFunction - 两个参数的无副作用函数
      返回值:
      更新后的值
      自 JDK 版本:
      1.8
    • toString

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

      public int intValue()
      返回此AtomicLong的当前值作为int的窄化原始转换后的值,具有由VarHandle.getVolatile(java.lang.Object...)指定的内存效果。
      指定者:
      intValue 在类 Number
      返回值:
      转换为int类型后表示的数值。
      参见 Java 语言规范:
      5.1.3 窄化原始转换
    • longValue

      public long longValue()
      返回此AtomicLong的当前值作为long,具有由VarHandle.getVolatile(java.lang.Object...)指定的内存效果。等同于get()
      指定者:
      longValue 在类 Number
      返回值:
      转换为long类型后表示的数值。
    • floatValue

      public float floatValue()
      返回此AtomicLong的当前值作为float的扩宽原始转换后的值,具有由VarHandle.getVolatile(java.lang.Object...)指定的内存效果。
      指定者:
      floatValue 在类 Number
      返回值:
      转换为float类型后表示的数值。
      参见 Java 语言规范:
      5.1.2 扩宽原始转换
    • doubleValue

      public double doubleValue()
      返回此AtomicLong的当前值作为double的扩宽原始转换后的值,具有由VarHandle.getVolatile(java.lang.Object...)指定的内存效果。
      指定者:
      doubleValue 在类 Number
      返回值:
      转换为 double 类型后表示的对象的数值。
      参见 Java 语言规范:
      5.1.2 扩展原始类型转换
    • getPlain

      public final long getPlain()
      返回当前值,具有读取内存语义,就好像变量被声明为非volatile
      返回值:
      该值
      自 JDK 版本:
      9
    • setPlain

      public final void setPlain(long newValue)
      将值设置为 newValue,具有设置内存语义,就好像变量被声明为非volatile和非final
      参数:
      newValue - 新值
      自 JDK 版本:
      9
    • getOpaque

      public final long getOpaque()
      返回当前值,具有由 VarHandle.getOpaque(java.lang.Object...) 指定的内存效果。
      返回值:
      该值
      自 JDK 版本:
      9
    • setOpaque

      public final void setOpaque(long newValue)
      将值设置为 newValue,具有由 VarHandle.setOpaque(java.lang.Object...) 指定的内存效果。
      参数:
      newValue - 新值
      自 JDK 版本:
      9
    • getAcquire

      public final long getAcquire()
      返回当前值,具有由 VarHandle.getAcquire(java.lang.Object...) 指定的内存效果。
      返回值:
      该值
      自 JDK 版本:
      9
    • setRelease

      public final void setRelease(long newValue)
      将值设置为 newValue,具有由 VarHandle.setRelease(java.lang.Object...) 指定的内存效果。
      参数:
      newValue - 新值
      自 JDK 版本:
      9
    • compareAndExchange

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

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

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

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

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

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