Класс AtomicIntegerFieldUpdater<T>
- Параметры типа:
T- Тип объекта, содержащего обновляемое поле
public abstract class AtomicIntegerFieldUpdater<T> extends Object
volatile int полей указанных классов. Этот класс предназначен для использования в атомарных структурах данных, в которых несколько полей одного узла независимо подвергаются атомарным обновлениям. Обратите внимание, что гарантии метода compareAndSet в этом классе слабее, чем в других атомарных классах. Поскольку этот класс не может гарантировать, что все использования поля подходят для целей атомарного доступа, он может гарантировать атомарность только относительно других вызовов compareAndSet и set для одного и того же обновителя.
Объектные аргументы для параметров типа T, которые не являются экземплярами класса, переданного в newUpdater(java.lang.Class<U>, java.lang.String), приведут к тому, что будет брошено исключение ClassCastException.
- С момента:
- 1.5
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Защищенный конструктор без действий, предназначенный для использования подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final int |
accumulateAndGet |
Атомарно обновляет (с эффектами памяти, как указано в VarHandle.compareAndSet(java.lang.Object...)) поле данного объекта, управляемого этим обновителем, результатом применения заданной функции к текущему и заданному значениям, возвращая обновленное значение. |
int |
addAndGet |
Атомарно добавляет заданное значение к текущему значению поля данного объекта, управляемого этим обновителем. |
abstract boolean |
compareAndSet |
Атомарно устанавливает поле данного объекта, управляемого этим обновителем, в заданное обновленное значение, если текущее значение == ожидаемого значения. |
int |
decrementAndGet |
Атомарно декрементирует на единицу текущее значение поля данного объекта, управляемого этим обновителем. |
abstract int |
get |
Возвращает текущее значение, хранящееся в поле данного объекта, управляемого этим обновителем. |
final int |
getAndAccumulate |
Атомарно обновляет (с эффектами памяти, как указано в VarHandle.compareAndSet(java.lang.Object...)) поле данного объекта, управляемого этим обновителем, результатом применения заданной функции к текущему и заданному значениям, возвращая предыдущее значение. |
int |
getAndAdd |
Атомарно добавляет заданное значение к текущему значению поля данного объекта, управляемого этим обновителем. |
int |
getAndDecrement |
Атомарно декрементирует на единицу текущее значение поля данного объекта, управляемого этим обновителем. |
int |
getAndIncrement |
Атомарно инкрементирует на единицу текущее значение поля данного объекта, управляемого этим обновителем. |
int |
getAndSet |
Атомарно устанавливает поле данного объекта, управляемого этим обновителем, в заданное значение и возвращает старое значение. |
final int |
getAndUpdate |
Атомарно обновляет (с эффектами памяти, как указано в VarHandle.compareAndSet(java.lang.Object...)) поле данного объекта, управляемого этим обновителем, результатом применения заданной функции, возвращая предыдущее значение. |
int |
incrementAndGet |
Атомарно инкрементирует на единицу текущее значение поля данного объекта, управляемого этим обновителем. |
abstract void |
lazySet |
В конечном итоге устанавливает поле данного объекта, управляемого этим обновителем, в заданное обновленное значение. |
static <U> AtomicIntegerFieldUpdater |
newUpdater |
Создаёт и возвращает обновитель для объектов с данным полем. |
abstract void |
set |
Устанавливает поле данного объекта, управляемого этим обновителем, в заданное обновленное значение. |
final int |
updateAndGet |
Атомарно обновляет (с эффектами памяти, как указано в VarHandle.compareAndSet(java.lang.Object...)) поле данного объекта, управляемого этим обновителем, результатом применения заданной функции, возвращая обновленное значение. |
abstract boolean |
weakCompareAndSet |
Атомарно устанавливает поле данного объекта, управляемого этим обновителем, в заданное обновленное значение, если текущее значение == ожидаемого значения. |
Подробное описание конструкторов
AtomicIntegerFieldUpdater
protected AtomicIntegerFieldUpdater()
Подробное описание методов
newUpdater
public static <U> AtomicIntegerFieldUpdater<U> newUpdater(Class<U> tclass, String fieldName)
- Параметры типа:
U- тип экземпляров tclass- Параметры:
-
tclass- класс объектов, содержащих поле -
fieldName- имя поля, которое нужно обновить - Возвращает:
- обновляющий элемент
- Исключения:
-
IllegalArgumentException- если поле не является типом volatile integer -
RuntimeException- с вложенным исключением, основанным на рефлексии, если класс не содержит поля или имеет неправильный тип, или поле недоступно для вызывающего объекта в соответствии с контролем доступа к языку Java
compareAndSet
public abstract boolean compareAndSet(T obj, int expect, int update)
== ожидаемого значения. Этот метод гарантированно является атомарным по отношению к другим вызовам compareAndSet и set, но не обязательно по отношению к другим изменениям в поле.- Параметры:
-
obj- Объект, чьё поле нужно условно установить -
expect- ожидаемое значение -
update- новое значение - Возвращает:
-
true, если успешно
weakCompareAndSet
public abstract boolean weakCompareAndSet(T obj, int expect, int update)
== ожидаемого значения. Этот метод гарантированно является атомарным по отношению к другим вызовам compareAndSet и set, но не обязательно по отношению к другим изменениям в поле. Эта операция может случайно завершиться неудачно и не гарантирует порядок, поэтому она только в редких случаях является подходящей альтернативой compareAndSet.
- Параметры:
-
obj- Объект, чьё поле нужно условно установить -
expect- ожидаемое значение -
update- новое значение - Возвращает:
-
true, если успешно
set
public abstract void set(T obj, int newValue)
compareAndSet.- Параметры:
-
obj- Объект, чьё поле нужно установить -
newValue- новое значение
lazySet
public abstract void lazySet(T obj, int newValue)
- Параметры:
-
obj- Объект, чьё поле нужно установить -
newValue- новое значение - С момента:
- 1.6
get
public abstract int get(T obj)
- Параметры:
-
obj- Объект, чьё поле нужно получить - Возвращает:
- текущее значение
getAndSet
public int getAndSet(T obj, int newValue)
- Параметры:
-
obj- Объект, чьё поле нужно получить и установить -
newValue- новое значение - Возвращает:
- предыдущее значение
getAndIncrement
public int getAndIncrement(T obj)
- Параметры:
-
obj- Объект, чьё поле нужно получить и установить - Возвращает:
- предыдущее значение
getAndDecrement
public int getAndDecrement(T obj)
- Параметры:
-
obj- Объект, чьё поле нужно получить и установить - Возвращает:
- предыдущее значение
getAndAdd
public int getAndAdd(T obj, int delta)
- Параметры:
-
obj- Объект, чьё поле нужно получить и установить -
delta- значение для добавления - Возвращает:
- предыдущее значение
incrementAndGet
public int incrementAndGet(T obj)
- Параметры:
-
obj- Объект, чьё поле нужно получить и установить - Возвращает:
- обновлённое значение
decrementAndGet
public int decrementAndGet(T obj)
- Параметры:
-
obj- Объект, чьё поле нужно получить и установить - Возвращает:
- обновлённое значение
addAndGet
public int addAndGet(T obj, int delta)
- Параметры:
-
obj- Объект, чьё поле нужно получить и установить -
delta- значение для добавления - Возвращает:
- обновлённое значение
getAndUpdate
public final int getAndUpdate(T obj, IntUnaryOperator updateFunction)
VarHandle.compareAndSet(java.lang.Object...)) поле заданного объекта, управляемого этим обновляющим элементом, с результатами применения заданной функции, возвращая предыдущее значение. Функция должна быть без побочных эффектов, так как она может быть повторно применена, когда попытки обновления завершаются неудачно из-за конкуренции между потоками.- Параметры:
-
obj- Объект, чьё поле нужно получить и установить -
updateFunction- функция без побочных эффектов - Возвращает:
- предыдущее значение
- С момента:
- 1.8
updateAndGet
public final int updateAndGet(T obj, IntUnaryOperator updateFunction)
VarHandle.compareAndSet(java.lang.Object...)) поле заданного объекта, управляемого этим обновляющим элементом, с результатами применения заданной функции, возвращая обновлённое значение. Функция должна быть без побочных эффектов, так как она может быть повторно применена, когда попытки обновления завершаются неудачно из-за конкуренции между потоками.- Параметры:
-
obj- Объект, чьё поле нужно получить и установить -
updateFunction- функция без побочных эффектов - Возвращает:
- обновлённое значение
- С момента:
- 1.8
getAndAccumulate
public final int getAndAccumulate(T obj, int x, IntBinaryOperator accumulatorFunction)
VarHandle.compareAndSet(java.lang.Object...)) поле заданного объекта, управляемого этим обновляющим элементом, с результатами применения заданной функции к текущему и заданным значениям, возвращая предыдущее значение. Функция должна быть без побочных эффектов, так как она может быть повторно применена, когда попытки обновления завершаются неудачно из-за конкуренции между потоками. Функция применяется с текущим значением в качестве первого аргумента и заданным обновлением в качестве второго аргумента.- Параметры:
-
obj- Объект, чьё поле нужно получить и установить -
x- значение обновления -
accumulatorFunction- функция без побочных эффектов от двух аргументов - Возвращает:
- предыдущее значение
- С момента:
- 1.8
accumulateAndGet
public final int accumulateAndGet(T obj, int x, IntBinaryOperator accumulatorFunction)
VarHandle.compareAndSet(java.lang.Object...)) поле заданного объекта, управляемого этим обновляющим элементом, с результатами применения заданной функции к текущему и заданному значениям, возвращая обновленное значение. Функция должна быть без побочных эффектов, так как она может быть повторно применена, когда попытки обновления терпят неудачу из-за конкуренции между потоками. Функция применяется с текущим значением в качестве первого аргумента и заданным обновлением в качестве второго аргумента.- Параметры:
-
obj- Объект, поле которого необходимо получить и установить -
x- значение обновления -
accumulatorFunction- функция без побочных эффектов от двух аргументов - Возвращает:
- обновленное значение
- С:
- 1.8
© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.html