Класс AtomicReferenceArray<E>
java.lang.Object
java.util.concurrent.atomic.AtomicReferenceArray<E>
- Параметры типа:
E— Базовый класс элементов, хранящихся в этом массиве
- Все реализуемые интерфейсы:
Serializable
public class AtomicReferenceArray<E> extends Object implements Serializable
Массив ссылок на объекты, элементы которого можно обновлять атомарно. Описание свойств атомарных обращений см. в спецификации
VarHandle.- Начиная с версии:
- 1.5
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
AtomicReferenceArray |
Создает новый AtomicReferenceArray заданной длины, изначально содержащий null во всех элементах. |
AtomicReferenceArray |
Создает новый AtomicReferenceArray той же длины, что и заданный массив, копируя из него все элементы. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final E |
accumulateAndGet |
Атомарно обновляет элемент с индексом i, применяя заданную функцию к текущему и заданному значениям, и возвращает обновленное значение (эффекты памяти соответствуют спецификации VarHandle.compareAndSet(Object...)). |
final E |
compareAndExchange |
Атомарно устанавливает элемент с индексом i в значение newValue, если текущее значение элемента, называемое свидетельским значением, == expectedValue (эффекты памяти соответствуют спецификации VarHandle.compareAndExchange(Object...)). |
final E |
compareAndExchangeAcquire |
Атомарно устанавливает элемент с индексом i в значение newValue, если текущее значение элемента, называемое свидетельским значением, == expectedValue (эффекты памяти соответствуют спецификации VarHandle.compareAndExchangeAcquire(Object...)). |
final E |
compareAndExchangeRelease |
Атомарно устанавливает элемент с индексом i в значение newValue, если текущее значение элемента, называемое свидетельским значением, == expectedValue (эффекты памяти соответствуют спецификации VarHandle.compareAndExchangeRelease(Object...)). |
final boolean |
compareAndSet |
Атомарно устанавливает элемент с индексом i в значение newValue, если текущее значение элемента == expectedValue (эффекты памяти соответствуют спецификации VarHandle.compareAndSet(Object...)). |
final E |
get |
Возвращает текущее значение элемента с индексом i (эффекты памяти соответствуют спецификации VarHandle.getVolatile(Object...)). |
final E |
getAcquire |
Возвращает текущее значение элемента с индексом i (эффекты памяти соответствуют спецификации VarHandle.getAcquire(Object...)). |
final E |
getAndAccumulate |
Атомарно обновляет элемент с индексом i, применяя заданную функцию к текущему и заданному значениям, и возвращает предыдущее значение (эффекты памяти соответствуют спецификации VarHandle.compareAndSet(Object...)). |
final E |
getAndSet |
Атомарно устанавливает элемент с индексом i в значение
newValue и возвращает старое значение (эффекты памяти соответствуют спецификации VarHandle.getAndSet(Object...)). |
final E |
getAndUpdate |
Атомарно обновляет элемент с индексом i, применяя заданную функцию, и возвращает предыдущее значение (эффекты памяти соответствуют спецификации VarHandle.compareAndSet(Object...)). |
final E |
getOpaque |
Возвращает текущее значение элемента с индексом i (эффекты памяти соответствуют спецификации VarHandle.getOpaque(Object...)). |
final E |
getPlain |
Возвращает текущее значение элемента с индексом i, используя семантику памяти чтения, как если бы переменная была объявлена non-volatile. |
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, используя семантику памяти записи, как если бы переменная была объявлена non-volatile и non-final. |
final void |
setRelease |
Устанавливает элемент с индексом i в значение newValue (эффекты памяти соответствуют спецификации VarHandle.setRelease(Object...)). |
String |
toString() |
Возвращает строковое представление текущих значений массива. |
final E |
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...)). |
Подробное описание конструкторов
AtomicReferenceArray
public AtomicReferenceArray(int length)
Создает новый AtomicReferenceArray заданной длины, в котором все элементы изначально равны null.
- Параметры:
-
length— длина массива
AtomicReferenceArray
public AtomicReferenceArray(E[] array)
Создает новый AtomicReferenceArray той же длины, что и заданный массив, копируя из него все элементы.
- Параметры:
-
array— массив, из которого копируются элементы - Исключения:
-
NullPointerException— если array равен null
Подробное описание методов
length
public final int length()
Возвращает длину массива.
- Возвращает:
- длину массива
get
public final E get(int i)
Возвращает текущее значение элемента с индексом
i; эффекты для памяти соответствуют указанным в VarHandle.getVolatile(Object...).- Параметры:
-
i— индекс - Возвращает:
- текущее значение
set
public final void set(int i, E newValue)
Задает для элемента с индексом
i значение newValue; эффекты для памяти соответствуют указанным в VarHandle.setVolatile(Object...).- Параметры:
-
i— индекс -
newValue— новое значение
lazySet
public final void lazySet(int i, E newValue)
Задает для элемента с индексом
i значение newValue; эффекты для памяти соответствуют указанным в VarHandle.setRelease(Object...).- Параметры:
-
i— индекс -
newValue— новое значение - Начиная с версии:
- 1.6
getAndSet
public final E getAndSet(int i, E newValue)
Атомарно задает для элемента с индексом
i значение
newValue и возвращает прежнее значение; эффекты для памяти соответствуют указанным в VarHandle.getAndSet(Object...).- Параметры:
-
i— индекс -
newValue— новое значение - Возвращает:
- предыдущее значение
compareAndSet
public final boolean compareAndSet(int i, E expectedValue, E newValue)
Атомарно задает для элемента с индексом
i значение newValue, если текущее значение элемента == expectedValue; эффекты для памяти соответствуют указанным в VarHandle.compareAndSet(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
-
trueв случае успеха. Возвращаемое значение false означает, что фактическое значение не совпало с ожидаемым.
weakCompareAndSet
@Deprecated(since="9") public final boolean weakCompareAndSet(int i, E expectedValue, E newValue)
Устарел.
Этот метод имеет обычные эффекты для памяти, однако его имя подразумевает волатильные эффекты для памяти (см. такие методы, как
compareAndExchange(int, E, E) и compareAndSet(int, E, E)). Во избежание путаницы между обычными и волатильными эффектами для памяти рекомендуется вместо него использовать метод weakCompareAndSetPlain(int, E, E).Возможно, атомарно задает для элемента с индексом
i значение newValue, если текущее значение элемента == expectedValue; эффекты для памяти соответствуют указанным в VarHandle.weakCompareAndSetPlain(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
-
trueв случае успеха - См. также:
weakCompareAndSetPlain
public final boolean weakCompareAndSetPlain(int i, E expectedValue, E newValue)
Возможно, атомарно задает для элемента с индексом
i значение newValue, если текущее значение элемента == expectedValue; эффекты для памяти соответствуют указанным в VarHandle.weakCompareAndSetPlain(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
-
trueв случае успеха - Начиная с версии:
- 9
getAndUpdate
public final E getAndUpdate(int i, UnaryOperator<E> updateFunction)
Атомарно обновляет элемент с индексом
i, применяя заданную функцию и возвращая предыдущее значение (эффекты для памяти соответствуют указанным в VarHandle.compareAndSet(Object...)). Функция не должна иметь побочных эффектов, поскольку она может применяться повторно, если попытки обновления завершаются неудачей из-за конкуренции между потоками.- Параметры:
-
i— индекс -
updateFunction— функция без побочных эффектов - Возвращает:
- предыдущее значение
- Начиная с версии:
- 1.8
updateAndGet
public final E updateAndGet(int i, UnaryOperator<E> updateFunction)
Атомарно обновляет элемент с индексом
i, применяя заданную функцию и возвращая обновленное значение (эффекты для памяти соответствуют указанным в VarHandle.compareAndSet(Object...)). Функция не должна иметь побочных эффектов, поскольку она может применяться повторно, если попытки обновления завершаются неудачей из-за конкуренции между потоками.- Параметры:
-
i— индекс -
updateFunction— функция без побочных эффектов - Возвращает:
- обновленное значение
- Начиная с версии:
- 1.8
getAndAccumulate
public final E getAndAccumulate(int i, E x, BinaryOperator<E> accumulatorFunction)
Атомарно обновляет элемент с индексом
i, применяя заданную функцию к текущему и заданному значениям, и возвращает предыдущее значение (эффекты для памяти соответствуют указанным в VarHandle.compareAndSet(Object...)). Функция не должна иметь побочных эффектов, поскольку она может применяться повторно, если попытки обновления завершаются неудачей из-за конкуренции между потоками. Функция получает текущим значением элемента с индексом i первый аргумент, а заданным значением для обновления — второй аргумент.- Параметры:
-
i— индекс -
x— значение для обновления -
accumulatorFunction— функция двух аргументов без побочных эффектов - Возвращает:
- предыдущее значение
- Начиная с версии:
- 1.8
accumulateAndGet
public final E accumulateAndGet(int i, E x, BinaryOperator<E> accumulatorFunction)
Атомарно обновляет элемент с индексом
i, применяя заданную функцию к текущему и заданному значениям, и возвращает обновленное значение (эффекты для памяти соответствуют указанным в VarHandle.compareAndSet(Object...)). Функция не должна иметь побочных эффектов, поскольку она может применяться повторно, если попытки обновления завершаются неудачей из-за конкуренции между потоками. Функция получает текущим значением элемента с индексом i первый аргумент, а заданным значением для обновления — второй аргумент.- Параметры:
-
i— индекс -
x— значение для обновления -
accumulatorFunction— функция двух аргументов без побочных эффектов - Возвращает:
- обновленное значение
- Начиная с версии:
- 1.8
toString
getPlain
public final E getPlain(int i)
Возвращает текущее значение элемента с индексом
i; семантика доступа к памяти соответствует чтению переменной, объявленной как non-volatile.- Параметры:
-
i— индекс - Возвращает:
- значение
- Начиная с версии:
- 9
setPlain
public final void setPlain(int i, E newValue)
Задает для элемента с индексом
i значение newValue; семантика доступа к памяти соответствует записи переменной, объявленной как non-volatile и non-final.- Параметры:
-
i— индекс -
newValue— новое значение - Начиная с версии:
- 9
getOpaque
public final E getOpaque(int i)
Возвращает текущее значение элемента с индексом
i; эффекты для памяти соответствуют указанным в VarHandle.getOpaque(Object...).- Параметры:
-
i— индекс - Возвращает:
- значение
- Начиная с версии:
- 9
setOpaque
public final void setOpaque(int i, E newValue)
Задает для элемента с индексом
i значение newValue; эффекты для памяти соответствуют указанным в VarHandle.setOpaque(Object...).- Параметры:
-
i— индекс -
newValue— новое значение - Начиная с версии:
- 9
getAcquire
public final E getAcquire(int i)
Возвращает текущее значение элемента с индексом
i; эффекты для памяти соответствуют указанным в VarHandle.getAcquire(Object...).- Параметры:
-
i— индекс - Возвращает:
- значение
- Начиная с версии:
- 9
setRelease
public final void setRelease(int i, E newValue)
Задает для элемента с индексом
i значение newValue; эффекты для памяти соответствуют указанным в VarHandle.setRelease(Object...).- Параметры:
-
i— индекс -
newValue— новое значение - Начиная с версии:
- 9
compareAndExchange
public final E compareAndExchange(int i, E expectedValue, E newValue)
Атомарно задает для элемента с индексом
i значение newValue, если текущее значение элемента, называемое контрольным значением, == expectedValue; эффекты для памяти соответствуют указанным в VarHandle.compareAndExchange(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
- контрольное значение, которое в случае успеха совпадает с ожидаемым значением
- Начиная с версии:
- 9
compareAndExchangeAcquire
public final E compareAndExchangeAcquire(int i, E expectedValue, E newValue)
Атомарно задает для элемента с индексом
i значение newValue, если текущее значение элемента, называемое контрольным значением, == expectedValue; эффекты для памяти соответствуют указанным в VarHandle.compareAndExchangeAcquire(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
- контрольное значение, которое в случае успеха совпадает с ожидаемым значением
- Начиная с версии:
- 9
compareAndExchangeRelease
public final E compareAndExchangeRelease(int i, E expectedValue, E newValue)
Атомарно задает для элемента с индексом
i значение newValue, если текущее значение элемента, называемое контрольным значением, == expectedValue; эффекты для памяти соответствуют указанным в VarHandle.compareAndExchangeRelease(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
- контрольное значение, которое в случае успеха совпадает с ожидаемым значением
- Начиная с версии:
- 9
weakCompareAndSetVolatile
public final boolean weakCompareAndSetVolatile(int i, E expectedValue, E newValue)
Возможно, атомарно задает для элемента с индексом
i значение newValue, если текущее значение элемента == expectedValue; эффекты для памяти соответствуют указанным в VarHandle.weakCompareAndSet(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
-
trueв случае успеха - Начиная с версии:
- 9
weakCompareAndSetAcquire
public final boolean weakCompareAndSetAcquire(int i, E expectedValue, E newValue)
Возможно, атомарно задает для элемента с индексом
i значение newValue, если текущее значение элемента == expectedValue; эффекты для памяти соответствуют указанным в VarHandle.weakCompareAndSetAcquire(Object...).- Параметры:
-
i— индекс -
expectedValue— ожидаемое значение -
newValue— новое значение - Возвращает:
-
trueв случае успеха - Начиная с версии:
- 9
weakCompareAndSetRelease
public final boolean weakCompareAndSetRelease(int i, E expectedValue, E 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/AtomicReferenceArray.html
compareAndExchange(int, E, E)иcompareAndSet(int, E, E)).