Класс AtomicLongArray
java.lang.Object
java.util.concurrent.atomic.AtomicLongArray
- Все реализованные интерфейсы:
Serializable
public class AtomicLongArray extends Object implements Serializable
Массив
long, элементы которого можно обновлять атомарно. Описание свойств атомарных обращений см. в спецификации VarHandle.- Начиная с:
- 1.5
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
AtomicLongArray |
Создает новый AtomicLongArray заданной длины, изначально заполненный нулями. |
AtomicLongArray |
Создает новый AtomicLongArray той же длины, что и заданный массив, копируя все его элементы. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final long |
accumulateAndGet |
Атомарно обновляет элемент с индексом i (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)), применяя заданную функцию к текущему и заданному значениям, и возвращает обновленное значение. |
long |
addAndGet |
Атомарно прибавляет заданное значение к элементу с индексом i; эффекты памяти указаны в VarHandle.getAndAdd(Object...). |
final long |
compareAndExchange |
Атомарно устанавливает для элемента с индексом i значение newValue, если текущее значение элемента, называемое свидетельствующим значением, == expectedValue; эффекты памяти указаны в VarHandle.compareAndExchange(Object...). |
final long |
compareAndExchangeAcquire |
Атомарно устанавливает для элемента с индексом i значение newValue, если текущее значение элемента, называемое свидетельствующим значением, == expectedValue; эффекты памяти указаны в VarHandle.compareAndExchangeAcquire(Object...). |
final long |
compareAndExchangeRelease |
Атомарно устанавливает для элемента с индексом i значение newValue, если текущее значение элемента, называемое свидетельствующим значением, == expectedValue; эффекты памяти указаны в VarHandle.compareAndExchangeRelease(Object...). |
final boolean |
compareAndSet |
Атомарно устанавливает для элемента с индексом i значение newValue, если текущее значение элемента == expectedValue; эффекты памяти указаны в VarHandle.compareAndSet(Object...). |
final long |
decrementAndGet |
Атомарно уменьшает значение элемента с индексом i; эффекты памяти указаны в VarHandle.getAndAdd(Object...). |
final long |
get |
Возвращает текущее значение элемента с индексом i; эффекты памяти указаны в VarHandle.getVolatile(Object...). |
final long |
getAcquire |
Возвращает текущее значение элемента с индексом i; эффекты памяти указаны в VarHandle.getAcquire(Object...). |
final long |
getAndAccumulate |
Атомарно обновляет элемент с индексом i (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)), применяя заданную функцию к текущему и заданному значениям, и возвращает предыдущее значение. |
final long |
getAndAdd |
Атомарно прибавляет заданное значение к элементу с индексом i; эффекты памяти указаны в VarHandle.getAndAdd(Object...). |
final long |
getAndDecrement |
Атомарно уменьшает значение элемента с индексом i; эффекты памяти указаны в VarHandle.getAndAdd(Object...). |
final long |
getAndIncrement |
Атомарно увеличивает значение элемента с индексом i; эффекты памяти указаны в VarHandle.getAndAdd(Object...). |
final long |
getAndSet |
Атомарно устанавливает для элемента с индексом i значение
newValue и возвращает прежнее значение; эффекты памяти указаны в VarHandle.getAndSet(Object...). |
final long |
getAndUpdate |
Атомарно обновляет элемент с индексом i (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)), применяя заданную функцию, и возвращает предыдущее значение. |
final long |
getOpaque |
Возвращает текущее значение элемента с индексом i; эффекты памяти указаны в VarHandle.getOpaque(Object...). |
final long |
getPlain |
Возвращает текущее значение элемента с индексом i; семантика памяти соответствует чтению так, как если бы переменная была объявлена не-volatile. |
final long |
incrementAndGet |
Атомарно увеличивает значение элемента с индексом i; эффекты памяти указаны в VarHandle.getAndAdd(Object...). |
final void |
lazySet |
Устанавливает для элемента с индексом i значение newValue; эффекты памяти указаны в VarHandle.setRelease(Object...). |
final int |
length() |
Возвращает длину массива. |
final void |
set |
Устанавливает для элемента с индексом i значение newValue; эффекты памяти указаны в VarHandle.setVolatile(Object...). |
final void |
setOpaque |
Устанавливает для элемента с индексом i значение newValue; эффекты памяти указаны в VarHandle.setOpaque(Object...). |
final void |
setPlain |
Устанавливает для элемента с индексом i значение newValue; семантика памяти соответствует записи так, как если бы переменная была объявлена не-volatile и не-final. |
final void |
setRelease |
Устанавливает для элемента с индексом i значение newValue; эффекты памяти указаны в VarHandle.setRelease(Object...). |
String |
toString() |
Возвращает строковое представление текущих значений массива. |
final long |
updateAndGet |
Атомарно обновляет элемент с индексом i (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)), применяя заданную функцию, и возвращает обновленное значение. |
final boolean |
weakCompareAndSet |
Устарело. |
final boolean |
weakCompareAndSetAcquire |
Может атомарно установить для элемента с индексом i значение newValue, если текущее значение элемента == expectedValue; эффекты памяти указаны в VarHandle.weakCompareAndSetAcquire(Object...). |
final boolean |
weakCompareAndSetPlain |
Может атомарно установить для элемента с индексом i значение newValue, если текущее значение элемента == expectedValue; эффекты памяти указаны в VarHandle.weakCompareAndSetPlain(Object...). |
final boolean |
weakCompareAndSetRelease |
Может атомарно установить для элемента с индексом i значение newValue, если текущее значение элемента == expectedValue; эффекты памяти указаны в VarHandle.weakCompareAndSetRelease(Object...). |
final boolean |
weakCompareAndSetVolatile |
Может атомарно установить для элемента с индексом i значение newValue, если текущее значение элемента == expectedValue; эффекты памяти указаны в VarHandle.weakCompareAndSet(Object...). |
Подробное описание конструкторов
AtomicLongArray
public AtomicLongArray(int length)
Создает новый AtomicLongArray заданной длины, все элементы которого изначально равны нулю.
- Параметры:
-
length— длина массива
AtomicLongArray
public AtomicLongArray(long[] array)
Создает новый AtomicLongArray той же длины, что и заданный массив, копируя из него все элементы.
- Параметры:
-
array— массив, из которого копируются элементы - Исключения:
-
NullPointerException— если array равен null
Подробное описание методов
length
public final int length()
Возвращает длину массива.
- Возвращает:
- длину массива
get
public final long get(int i)
Возвращает текущее значение элемента с индексом
i, с эффектами памяти, указанными в VarHandle.getVolatile(Object...).- Параметры:
-
i— индекс - Возвращает:
- текущее значение
set
public final void set(int i, long newValue)
Устанавливает для элемента с индексом
i значение newValue, с эффектами памяти, указанными в VarHandle.setVolatile(Object...).- Параметры:
-
i— индекс -
newValue— новое значение
lazySet
public final void lazySet(int i, long newValue)
Устанавливает для элемента с индексом
i значение newValue, с эффектами памяти, указанными в VarHandle.setRelease(Object...).- Параметры:
-
i— индекс -
newValue— новое значение - Начиная с:
- 1.6
getAndSet
public final long getAndSet(int i, long newValue)
Атомарно устанавливает для элемента с индексом
i значение
newValue и возвращает старое значение, с эффектами памяти, указанными в VarHandle.getAndSet(Object...).- Параметры:
-
i— индекс -
newValue— новое значение - Возвращает:
- предыдущее значение
compareAndSet
public final boolean compareAndSet(int i, long expectedValue, long newValue)
Атомарно устанавливает для элемента с индексом
i значение newValue, если текущее значение элемента == expectedValue, с эффектами памяти, указанными в VarHandle.compareAndSet(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
-
trueв случае успеха. Возвращаемое значение false означает, что фактическое значение не совпадало с ожидаемым.
weakCompareAndSet
@Deprecated(since="9") public final boolean weakCompareAndSet(int i, long expectedValue, long newValue)
Устарело.
Этот метод имеет обычные эффекты памяти, однако его имя предполагает эффекты памяти volatile (см. такие методы, как
compareAndExchange(int, long, long) и compareAndSet(int, long, long)). Чтобы избежать путаницы между обычными эффектами памяти и эффектами памяти volatile, рекомендуется вместо него использовать метод weakCompareAndSetPlain(int, long, long).Возможно, атомарно устанавливает для элемента с индексом
i значение newValue, если текущее значение элемента == expectedValue, с эффектами памяти, указанными в VarHandle.weakCompareAndSetPlain(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
-
trueв случае успеха - См. также:
weakCompareAndSetPlain
public final boolean weakCompareAndSetPlain(int i, long expectedValue, long newValue)
Возможно, атомарно устанавливает для элемента с индексом
i значение newValue, если текущее значение элемента == expectedValue, с эффектами памяти, указанными в VarHandle.weakCompareAndSetPlain(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
-
trueв случае успеха - Начиная с:
- 9
getAndIncrement
public final long getAndIncrement(int i)
Атомарно увеличивает значение элемента с индексом
i, с эффектами памяти, указанными в VarHandle.getAndAdd(Object...). Эквивалентно getAndAdd(i, 1).
- Параметры:
-
i— индекс - Возвращает:
- предыдущее значение
getAndDecrement
public final long getAndDecrement(int i)
Атомарно уменьшает значение элемента с индексом
i, с эффектами памяти, указанными в VarHandle.getAndAdd(Object...). Эквивалентно getAndAdd(i, -1).
- Параметры:
-
i— индекс - Возвращает:
- предыдущее значение
getAndAdd
public final long getAndAdd(int i, long delta)
Атомарно прибавляет заданное значение к элементу с индексом
i, с эффектами памяти, указанными в VarHandle.getAndAdd(Object...).- Параметры:
-
i— индекс -
delta— прибавляемое значение - Возвращает:
- предыдущее значение
incrementAndGet
public final long incrementAndGet(int i)
Атомарно увеличивает значение элемента с индексом
i, с эффектами памяти, указанными в VarHandle.getAndAdd(Object...). Эквивалентно addAndGet(i, 1).
- Параметры:
-
i— индекс - Возвращает:
- обновленное значение
decrementAndGet
public final long decrementAndGet(int i)
Атомарно уменьшает значение элемента с индексом
i, с эффектами памяти, указанными в VarHandle.getAndAdd(Object...). Эквивалентно addAndGet(i, -1).
- Параметры:
-
i— индекс - Возвращает:
- обновленное значение
addAndGet
public long addAndGet(int i, long delta)
Атомарно прибавляет заданное значение к элементу с индексом
i, с эффектами памяти, указанными в VarHandle.getAndAdd(Object...).- Параметры:
-
i— индекс -
delta— прибавляемое значение - Возвращает:
- обновленное значение
getAndUpdate
public final long getAndUpdate(int i, LongUnaryOperator updateFunction)
Атомарно обновляет элемент с индексом
i, применяя заданную функцию (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)), и возвращает предыдущее значение. Функция должна быть без побочных эффектов, поскольку при неудачных попытках обновления из-за конкуренции между потоками ее выполнение может быть повторено.- Параметры:
-
i— индекс -
updateFunction— функция без побочных эффектов - Возвращает:
- предыдущее значение
- Начиная с:
- 1.8
updateAndGet
public final long updateAndGet(int i, LongUnaryOperator updateFunction)
Атомарно обновляет элемент с индексом
i, применяя заданную функцию (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)), и возвращает обновленное значение. Функция должна быть без побочных эффектов, поскольку при неудачных попытках обновления из-за конкуренции между потоками ее выполнение может быть повторено.- Параметры:
-
i— индекс -
updateFunction— функция без побочных эффектов - Возвращает:
- обновленное значение
- Начиная с:
- 1.8
getAndAccumulate
public final long getAndAccumulate(int i, long x, LongBinaryOperator accumulatorFunction)
Атомарно обновляет элемент с индексом
i, применяя заданную функцию к текущему и заданному значениям (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)), и возвращает предыдущее значение. Функция должна быть без побочных эффектов, поскольку при неудачных попытках обновления из-за конкуренции между потоками ее выполнение может быть повторено. Функция получает в качестве первого аргумента текущее значение элемента с индексом i, а в качестве второго — заданное значение обновления.- Параметры:
-
i— индекс -
x— значение обновления -
accumulatorFunction— функция двух аргументов без побочных эффектов - Возвращает:
- предыдущее значение
- Начиная с:
- 1.8
accumulateAndGet
public final long accumulateAndGet(int i, long x, LongBinaryOperator accumulatorFunction)
Атомарно обновляет элемент с индексом
i, применяя заданную функцию к текущему и заданному значениям (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)), и возвращает обновленное значение. Функция должна быть без побочных эффектов, поскольку при неудачных попытках обновления из-за конкуренции между потоками ее выполнение может быть повторено. Функция получает в качестве первого аргумента текущее значение элемента с индексом i, а в качестве второго — заданное значение обновления.- Параметры:
-
i— индекс -
x— значение обновления -
accumulatorFunction— функция двух аргументов без побочных эффектов - Возвращает:
- обновленное значение
- Начиная с:
- 1.8
toString
getPlain
public final long getPlain(int i)
Возвращает текущее значение элемента с индексом
i, используя семантику памяти чтения, как если бы переменная была объявлена без volatile.- Параметры:
-
i— индекс - Возвращает:
- значение
- Начиная с:
- 9
setPlain
public final void setPlain(int i, long newValue)
Устанавливает для элемента с индексом
i значение newValue, используя семантику памяти записи, как если бы переменная была объявлена без volatile и без final.- Параметры:
-
i— индекс -
newValue— новое значение - Начиная с:
- 9
getOpaque
public final long getOpaque(int i)
Возвращает текущее значение элемента с индексом
i, с эффектами памяти, указанными в VarHandle.getOpaque(Object...).- Параметры:
-
i— индекс - Возвращает:
- значение
- Начиная с:
- 9
setOpaque
public final void setOpaque(int i, long newValue)
Устанавливает для элемента с индексом
i значение newValue, с эффектами памяти, указанными в VarHandle.setOpaque(Object...).- Параметры:
-
i— индекс -
newValue— новое значение - Начиная с:
- 9
getAcquire
public final long getAcquire(int i)
Возвращает текущее значение элемента с индексом
i, с эффектами памяти, указанными в VarHandle.getAcquire(Object...).- Параметры:
-
i— индекс - Возвращает:
- значение
- Начиная с:
- 9
setRelease
public final void setRelease(int i, long newValue)
Устанавливает для элемента с индексом
i значение newValue, с эффектами памяти, указанными в VarHandle.setRelease(Object...).- Параметры:
-
i— индекс -
newValue— новое значение - Начиная с:
- 9
compareAndExchange
public final long compareAndExchange(int i, long expectedValue, long newValue)
Атомарно устанавливает для элемента с индексом
i значение newValue, если текущее значение элемента, называемое свидетельствующим значением, == expectedValue, с эффектами памяти, указанными в VarHandle.compareAndExchange(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
- свидетельствующее значение, которое при успешном выполнении будет совпадать с ожидаемым значением
- Начиная с:
- 9
compareAndExchangeAcquire
public final long compareAndExchangeAcquire(int i, long expectedValue, long newValue)
Атомарно устанавливает для элемента с индексом
i значение newValue, если текущее значение элемента, называемое свидетельствующим значением, == expectedValue, с эффектами памяти, указанными в VarHandle.compareAndExchangeAcquire(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
- свидетельствующее значение, которое при успешном выполнении будет совпадать с ожидаемым значением
- Начиная с:
- 9
compareAndExchangeRelease
public final long compareAndExchangeRelease(int i, long expectedValue, long newValue)
Атомарно устанавливает для элемента с индексом
i значение newValue, если текущее значение элемента, называемое свидетельствующим значением, == expectedValue, с эффектами памяти, указанными в VarHandle.compareAndExchangeRelease(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
- свидетельствующее значение, которое при успешном выполнении будет совпадать с ожидаемым значением
- Начиная с:
- 9
weakCompareAndSetVolatile
public final boolean weakCompareAndSetVolatile(int i, long expectedValue, long newValue)
Возможно, атомарно устанавливает для элемента с индексом
i значение newValue, если текущее значение элемента == expectedValue, с эффектами памяти, указанными в VarHandle.weakCompareAndSet(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
-
trueв случае успеха - Начиная с:
- 9
weakCompareAndSetAcquire
public final boolean weakCompareAndSetAcquire(int i, long expectedValue, long newValue)
Возможно, атомарно устанавливает для элемента с индексом
i значение newValue, если текущее значение элемента == expectedValue, с эффектами памяти, указанными в VarHandle.weakCompareAndSetAcquire(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
-
trueв случае успеха - Начиная с:
- 9
weakCompareAndSetRelease
public final boolean weakCompareAndSetRelease(int i, long expectedValue, long newValue)
Возможно, атомарно устанавливает для элемента с индексом
i значение newValue, если текущее значение элемента == expectedValue, с эффектами памяти, указанными в VarHandle.weakCompareAndSetRelease(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
-
trueв случае успеха - Начиная с:
- 9
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/atomic/AtomicLongArray.html
compareAndExchange(int, long, long)иcompareAndSet(int, long, long)).