# AtomicInteger

public class **AtomicInteger** extends [Number](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Number.html)  
implements [Serializable](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/Serializable.html) An `int` value that may be updated atomically. See the
`https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/package-summary.html` package specification for
description of the properties of atomic variables. An
`AtomicInteger` is used in applications such as atomically
incremented counters, and cannot be used as a replacement for an
`https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Integer.html`. However, this class does extend
`Number` to allow uniform access by tools and utilities that
deal with numerically-based classes.

### Public Constructor Summary

|---|---|
|   | [AtomicInteger](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#AtomicInteger(int))(int initialValue) Creates a new AtomicInteger with the given initial value. |
|   | [AtomicInteger](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#AtomicInteger())() Creates a new AtomicInteger with initial value `0`. |

### Public Method Summary

|---|---|
| final int | [accumulateAndGet](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#accumulateAndGet(int,%20java.util.function.IntBinaryOperator))(int x, [IntBinaryOperator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/function/IntBinaryOperator.html) accumulatorFunction) Atomically updates the current value with the results of applying the given function to the current and given values, returning the updated value. |
| final int | [addAndGet](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#addAndGet(int))(int delta) Atomically adds the given value to the current value. |
| final boolean | [compareAndSet](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#compareAndSet(int,%20int))(int expect, int update) Atomically sets the value to the given updated value if the current value `==` the expected value. |
| final int | [decrementAndGet](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#decrementAndGet())() Atomically decrements by one the current value. |
| double | [doubleValue](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#doubleValue())() Returns the value of this `AtomicInteger` as a `double` after a widening primitive conversion. |
| float | [floatValue](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#floatValue())() Returns the value of this `AtomicInteger` as a `float` after a widening primitive conversion. |
| final int | [get](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#get())() Gets the current value. |
| final int | [getAndAccumulate](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#getAndAccumulate(int,%20java.util.function.IntBinaryOperator))(int x, [IntBinaryOperator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/function/IntBinaryOperator.html) accumulatorFunction) Atomically updates the current value with the results of applying the given function to the current and given values, returning the previous value. |
| final int | [getAndAdd](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#getAndAdd(int))(int delta) Atomically adds the given value to the current value. |
| final int | [getAndDecrement](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#getAndDecrement())() Atomically decrements by one the current value. |
| final int | [getAndIncrement](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#getAndIncrement())() Atomically increments by one the current value. |
| final int | [getAndSet](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#getAndSet(int))(int newValue) Atomically sets to the given value and returns the old value. |
| final int | [getAndUpdate](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#getAndUpdate(java.util.function.IntUnaryOperator))([IntUnaryOperator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/function/IntUnaryOperator.html) updateFunction) Atomically updates the current value with the results of applying the given function, returning the previous value. |
| final int | [incrementAndGet](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#incrementAndGet())() Atomically increments by one the current value. |
| int | [intValue](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#intValue())() Returns the value of this `AtomicInteger` as an `int`. |
| final void | [lazySet](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#lazySet(int))(int newValue) Eventually sets to the given value. |
| long | [longValue](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#longValue())() Returns the value of this `AtomicInteger` as a `long` after a widening primitive conversion. |
| final void | [set](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#set(int))(int newValue) Sets to the given value. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [toString](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#toString())() Returns the String representation of the current value. |
| final int | [updateAndGet](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#updateAndGet(java.util.function.IntUnaryOperator))([IntUnaryOperator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/function/IntUnaryOperator.html) updateFunction) Atomically updates the current value with the results of applying the given function, returning the updated value. |
| final boolean | [weakCompareAndSet](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#weakCompareAndSet(int,%20int))(int expect, int update) Atomically sets the value to the given updated value if the current value `==` the expected value. |

### Inherited Method Summary

From class [java.lang.Number](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Number.html)

|---|---|
| byte | [byteValue](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Number.html#byteValue())() Returns the value of the specified number as a `byte`, which may involve rounding or truncation. |
| abstract double | [doubleValue](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Number.html#doubleValue())() Returns the value of the specified number as a `double`, which may involve rounding. |
| abstract float | [floatValue](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Number.html#floatValue())() Returns the value of the specified number as a `float`, which may involve rounding. |
| abstract int | [intValue](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Number.html#intValue())() Returns the value of the specified number as an `int`, which may involve rounding or truncation. |
| abstract long | [longValue](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Number.html#longValue())() Returns the value of the specified number as a `long`, which may involve rounding or truncation. |
| short | [shortValue](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Number.html#shortValue())() Returns the value of the specified number as a `short`, which may involve rounding or truncation. |

From class [java.lang.Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)

|---|---|
| [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) | [clone](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#clone())() Creates and returns a copy of this `Object`. |
| boolean | [equals](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#equals(java.lang.Object))([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj) Compares this instance with the specified object and indicates if they are equal. |
| void | [finalize](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#finalize())() Invoked when the garbage collector has detected that this instance is no longer reachable. |
| final [Class](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html)\<?\> | [getClass](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#getClass())() Returns the unique instance of `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html` that represents this object's class. |
| int | [hashCode](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#hashCode())() Returns an integer hash code for this object. |
| final void | [notify](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notify())() Causes a thread which is waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| final void | [notifyAll](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notifyAll())() Causes all threads which are waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [toString](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#toString())() Returns a string containing a concise, human-readable description of this object. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long,%20int))(long timeout, int nanos) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long))(long timeout) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait())() Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object. |

## Public Constructors

#### public
**AtomicInteger**
(int initialValue)

Creates a new AtomicInteger with the given initial value.

##### Parameters

| initialValue | the initial value |
|---|---|

#### public
**AtomicInteger**
()

Creates a new AtomicInteger with initial value `0`.

## Public Methods

#### public final int
**accumulateAndGet**
(int x, [IntBinaryOperator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/function/IntBinaryOperator.html) accumulatorFunction)

Atomically updates the current value with the results of
applying the given function to the current and given values,
returning the updated value. The function should be
side-effect-free, since it may be re-applied when attempted
updates fail due to contention among threads. The function
is applied with the current value as its first argument,
and the given update as the second argument.

##### Parameters

| x | the update value |
| accumulatorFunction | a side-effect-free function of two arguments |
|---|---|

##### Returns

- the updated value

#### public final int
**addAndGet**
(int delta)

Atomically adds the given value to the current value.

##### Parameters

| delta | the value to add |
|---|---|

##### Returns

- the updated value

#### public final boolean
**compareAndSet**
(int expect, int 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.

#### public final int
**decrementAndGet**
()

Atomically decrements by one the current value.

##### Returns

- the updated value

#### public double
**doubleValue**
()

Returns the value of this `AtomicInteger` as a `double`
after a widening primitive conversion.

##### Returns

- the numeric value represented by this object after conversion to type `double`.

#### public float
**floatValue**
()

Returns the value of this `AtomicInteger` as a `float`
after a widening primitive conversion.

##### Returns

- the numeric value represented by this object after conversion to type `float`.

#### public final int
**get**
()

Gets the current value.

##### Returns

- the current value

#### public final int
**getAndAccumulate**
(int x, [IntBinaryOperator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/function/IntBinaryOperator.html) accumulatorFunction)

Atomically updates the current value with the results of
applying the given function to the current and given values,
returning the previous value. The function should be
side-effect-free, since it may be re-applied when attempted
updates fail due to contention among threads. The function
is applied with the current value as its first argument,
and the given update as the second argument.

##### Parameters

| x | the update value |
| accumulatorFunction | a side-effect-free function of two arguments |
|---|---|

##### Returns

- the previous value

#### public final int
**getAndAdd**
(int delta)

Atomically adds the given value to the current value.

##### Parameters

| delta | the value to add |
|---|---|

##### Returns

- the previous value

#### public final int
**getAndDecrement**
()

Atomically decrements by one the current value.

##### Returns

- the previous value

#### public final int
**getAndIncrement**
()

Atomically increments by one the current value.

##### Returns

- the previous value

#### public final int
**getAndSet**
(int newValue)

Atomically sets to the given value and returns the old value.

##### Parameters

| newValue | the new value |
|---|---|

##### Returns

- the previous value

#### public final int
**getAndUpdate**
([IntUnaryOperator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/function/IntUnaryOperator.html) updateFunction)

Atomically updates the current value with the results of
applying the given function, returning the previous value. The
function should be side-effect-free, since it may be re-applied
when attempted updates fail due to contention among threads.

##### Parameters

| updateFunction | a side-effect-free function |
|---|---|

##### Returns

- the previous value

#### public final int
**incrementAndGet**
()

Atomically increments by one the current value.

##### Returns

- the updated value

#### public int
**intValue**
()

Returns the value of this `AtomicInteger` as an `int`.
Equivalent to `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/AtomicInteger.html#get()`.

##### Returns

- the numeric value represented by this object after conversion to type `int`.

#### public final void
**lazySet**
(int newValue)

Eventually sets to the given value.

##### Parameters

| newValue | the new value |
|---|---|

#### public long
**longValue**
()

Returns the value of this `AtomicInteger` as a `long`
after a widening primitive conversion.

##### Returns

- the numeric value represented by this object after conversion to type `long`.

#### public final void
**set**
(int newValue)

Sets to the given value.

##### Parameters

| newValue | the new value |
|---|---|

#### public [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html)
**toString**
()

Returns the String representation of the current value.

##### Returns

- the String representation of the current value

#### public final int
**updateAndGet**
([IntUnaryOperator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/function/IntUnaryOperator.html) updateFunction)

Atomically updates the current value with the results of
applying the given function, returning the updated value. The
function should be side-effect-free, since it may be re-applied
when attempted updates fail due to contention among threads.

##### Parameters

| updateFunction | a side-effect-free function |
|---|---|

##### Returns

- the updated value

#### public final boolean
**weakCompareAndSet**
(int expect, int 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](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/atomic/package-summary#weakCompareAndSet), so is
only rarely an appropriate alternative to `compareAndSet`.

##### Parameters

| expect | the expected value |
| update | the new value |
|---|---|

##### Returns

- `true` if successful