java.util.concurrent.atomic

## Class AtomicLong

- java.lang.Object
- - java.lang.Number
  - - java.util.concurrent.atomic.AtomicLong

- All Implemented Interfaces:
    Serializable

      public class AtomicLong
      extends Number
      implements Serializable

  A `long` value that may be updated atomically. See the `java.util.concurrent.atomic` package specification for description of the properties of atomic variables. An `AtomicLong` is used in applications such as atomically incremented sequence numbers, and cannot be used as a replacement for a `Long`. However, this class does extend `Number` to allow uniform access by tools and utilities that deal with numerically-based classes.
  Since:
    1.5
  Author:
    Doug Lea
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AtomicLong()` Creates a new AtomicLong with initial value `0`.
    `AtomicLong(long initialValue)` Creates a new AtomicLong with the given initial value.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `long` | `addAndGet(long delta)` Atomically adds the given value to the current value.
    `boolean` | `compareAndSet(long expect, long update)` Atomically sets the value to the given updated value if the current value `==` the expected value.
    `long` | `decrementAndGet()` Atomically decrements by one the current value.
    `double` | `doubleValue()` Returns the value of the specified number as a `double`.
    `float` | `floatValue()` Returns the value of the specified number as a `float`.
    `long` | `get()` Gets the current value.
    `long` | `getAndAdd(long delta)` Atomically adds the given value to the current value.
    `long` | `getAndDecrement()` Atomically decrements by one the current value.
    `long` | `getAndIncrement()` Atomically increments by one the current value.
    `long` | `getAndSet(long newValue)` Atomically sets to the given value and returns the old value.
    `long` | `incrementAndGet()` Atomically increments by one the current value.
    `int` | `intValue()` Returns the value of the specified number as an `int`.
    `void` | `lazySet(long newValue)` Eventually sets to the given value.
    `long` | `longValue()` Returns the value of the specified number as a `long`.
    `void` | `set(long newValue)` Sets to the given value.
    `String` | `toString()` Returns the String representation of the current value.
    `boolean` | `weakCompareAndSet(long expect, long update)` Atomically sets the value to the given updated value if the current value `==` the expected value.

    - ### Methods inherited from class java.lang.Number

      `byteValue, shortValue`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### AtomicLong

          public AtomicLong(long initialValue)

      Creates a new AtomicLong with the given initial value.
      Parameters:
        `initialValue` - the initial value

    - #### AtomicLong

          public AtomicLong()

      Creates a new AtomicLong with initial value `0`.

  - ### Method Detail

    - #### get

          public final long get()

      Gets the current value.
      Returns:
        the current value

    - #### set

          public final void set(long newValue)

      Sets to the given value.
      Parameters:
        `newValue` - the new value

    - #### lazySet

          public final void lazySet(long newValue)

      Eventually sets to the given value.
      Parameters:
        `newValue` - the new value
      Since:
        1.6

    - #### getAndSet

          public final long getAndSet(long newValue)

      Atomically sets to the given value and returns the old value.
      Parameters:
        `newValue` - the new value
      Returns:
        the previous value

    - #### compareAndSet

          public final boolean compareAndSet(long expect,
                                             long update)

      Atomically sets the value to the given updated value if the current value `==` the expected value.
      Parameters:
        `expect` - the expected value
        `update` - the new value
      Returns:
        true if successful. False return indicates that the actual value was not equal to the expected value.

    - #### weakCompareAndSet

          public final boolean weakCompareAndSet(long expect,
                                                 long update)

      Atomically sets the value to the given updated value if the current value `==` the expected value.

      May fail spuriously and does not provide ordering guarantees, so is only rarely an appropriate alternative to `compareAndSet`.

      Parameters:
        `expect` - the expected value
        `update` - the new value
      Returns:
        true if successful.

    - #### getAndIncrement

          public final long getAndIncrement()

      Atomically increments by one the current value.
      Returns:
        the previous value

    - #### getAndDecrement

          public final long getAndDecrement()

      Atomically decrements by one the current value.
      Returns:
        the previous value

    - #### getAndAdd

          public final long getAndAdd(long delta)

      Atomically adds the given value to the current value.
      Parameters:
        `delta` - the value to add
      Returns:
        the previous value

    - #### incrementAndGet

          public final long incrementAndGet()

      Atomically increments by one the current value.
      Returns:
        the updated value

    - #### decrementAndGet

          public final long decrementAndGet()

      Atomically decrements by one the current value.
      Returns:
        the updated value

    - #### addAndGet

          public final long addAndGet(long delta)

      Atomically adds the given value to the current value.
      Parameters:
        `delta` - the value to add
      Returns:
        the updated value

    - #### toString

          public String toString()

      Returns the String representation of the current value.
      Overrides:
        `toString` in class `Object`
      Returns:
        the String representation of the current value.

    - #### intValue

          public int intValue()

      Description copied from class: `Number`
      Returns the value of the specified number as an `int`. This may involve rounding or truncation.
      Specified by:
        `intValue` in class `Number`
      Returns:
        the numeric value represented by this object after conversion to type `int`.

    - #### longValue

          public long longValue()

      Description copied from class: `Number`
      Returns the value of the specified number as a `long`. This may involve rounding or truncation.
      Specified by:
        `longValue` in class `Number`
      Returns:
        the numeric value represented by this object after conversion to type `long`.

    - #### floatValue

          public float floatValue()

      Description copied from class: `Number`
      Returns the value of the specified number as a `float`. This may involve rounding.
      Specified by:
        `floatValue` in class `Number`
      Returns:
        the numeric value represented by this object after conversion to type `float`.

    - #### doubleValue

          public double doubleValue()

      Description copied from class: `Number`
      Returns the value of the specified number as a `double`. This may involve rounding.
      Specified by:
        `doubleValue` in class `Number`
      Returns:
        the numeric value represented by this object after conversion to type `double`.

Copyright © 2025 API Design. All Rights Reserved.