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