Spec-Zone.ru › OpenJDK 27

Класс AtomicIntegerFieldUpdater<T>

java.lang.Object
java.util.concurrent.atomic.AtomicIntegerFieldUpdater<T>
Параметры типа:
T — тип объекта, содержащего обновляемое поле
public abstract class AtomicIntegerFieldUpdater<T> extends Object
Основанное на рефлексии средство, позволяющее атомарно обновлять заданные нестатические поля volatile int заданных классов и предоставляющее часть функциональности класса VarHandle, который следует использовать вместо него. Этот класс предназначен для использования в атомарных структурах данных, в которых несколько полей одного узла независимо подвергаются атомарным обновлениям.

Обратите внимание, что гарантии метода compareAndSet в этом классе слабее, чем в других атомарных классах. Поскольку этот класс не может обеспечить корректность всех способов обращения к полю для целей атомарного доступа, он гарантирует атомарность только относительно других вызовов compareAndSet и set для того же средства обновления.

Передача в качестве аргументов объектов типа T, которые не являются экземплярами класса, переданного в newUpdater(Class, String), приводит к выбросу исключения ClassCastException.

Начиная с:
1.5

Краткое описание конструкторов

AtomicIntegerFieldUpdater()
Модификатор Конструктор Описание
protected
Защищённый конструктор без действий для использования подклассами.

Краткое описание методов

Модификатор и тип Метод Описание
final int accumulateAndGet(T obj, int x, IntBinaryOperator accumulatorFunction)
Атомарно обновляет поле заданного объекта, управляемое этим средством обновления (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)), результатом применения заданной функции к текущему и заданному значениям и возвращает обновлённое значение.
int addAndGet(T obj, int delta)
Атомарно прибавляет заданное значение к текущему значению поля заданного объекта, управляемого этим средством обновления.
abstract boolean compareAndSet(T obj, int expect, int update)
Атомарно устанавливает для поля заданного объекта, управляемого этим средством обновления, заданное обновлённое значение, если текущее значение == ожидаемому значению.
int decrementAndGet(T obj)
Атомарно уменьшает на единицу текущее значение поля заданного объекта, управляемого этим средством обновления.
abstract int get(T obj)
Возвращает текущее значение поля заданного объекта, управляемого этим средством обновления.
final int getAndAccumulate(T obj, int x, IntBinaryOperator accumulatorFunction)
Атомарно обновляет поле заданного объекта, управляемое этим средством обновления (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)), результатом применения заданной функции к текущему и заданному значениям и возвращает предыдущее значение.
int getAndAdd(T obj, int delta)
Атомарно прибавляет заданное значение к текущему значению поля заданного объекта, управляемого этим средством обновления.
int getAndDecrement(T obj)
Атомарно уменьшает на единицу текущее значение поля заданного объекта, управляемого этим средством обновления.
int getAndIncrement(T obj)
Атомарно увеличивает на единицу текущее значение поля заданного объекта, управляемого этим средством обновления.
int getAndSet(T obj, int newValue)
Атомарно устанавливает для поля заданного объекта, управляемого этим средством обновления, заданное значение и возвращает старое значение.
final int getAndUpdate(T obj, IntUnaryOperator updateFunction)
Атомарно обновляет поле заданного объекта, управляемое этим средством обновления (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)), результатом применения заданной функции и возвращает предыдущее значение.
int incrementAndGet(T obj)
Атомарно увеличивает на единицу текущее значение поля заданного объекта, управляемого этим средством обновления.
abstract void lazySet(T obj, int newValue)
В конечном итоге устанавливает для поля заданного объекта, управляемого этим средством обновления, заданное обновлённое значение.
static <U> AtomicIntegerFieldUpdater<U> newUpdater(Class<U> tclass, String fieldName)
Создаёт и возвращает средство обновления для объектов с заданным полем.
abstract void set(T obj, int newValue)
Устанавливает для поля заданного объекта, управляемого этим средством обновления, заданное обновлённое значение.
final int updateAndGet(T obj, IntUnaryOperator updateFunction)
Атомарно обновляет поле заданного объекта, управляемое этим средством обновления (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)), результатом применения заданной функции и возвращает обновлённое значение.
abstract boolean weakCompareAndSet(T obj, int expect, int update)
Атомарно устанавливает для поля заданного объекта, управляемого этим средством обновления, заданное обновлённое значение, если текущее значение == ожидаемому значению.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие уведомления или прерывания.
final void wait(long timeoutMillis)
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие уведомления или прерывания, либо до истечения заданного времени.

Подробное описание конструкторов

AtomicIntegerFieldUpdater

protected AtomicIntegerFieldUpdater()
Защищённый конструктор без действий для использования подклассами.

Подробное описание методов

newUpdater

public static <U> AtomicIntegerFieldUpdater<U> newUpdater(Class<U> tclass, String fieldName)
Создаёт и возвращает средство обновления для объектов с заданным полем. Аргумент Class необходим для проверки соответствия типов рефлексии и обобщённых типов.
Параметры типа:
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)
Устанавливает для поля заданного объекта, управляемого этим средством обновления, заданное обновлённое значение. Гарантируется, что эта операция действует как volatile-запись относительно последующих вызовов 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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API