Spec-Zone.ru › OpenJDK 21

Класс AtomicIntegerFieldUpdater<T>

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

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

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

Since:
1.5

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

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

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

Модификатор и тип Метод Описание
final int accumulateAndGet(T obj, int x, IntBinaryOperator accumulatorFunction)
Атомарно обновляет (с эффектами памяти, указанными в VarHandle.compareAndSet(java.lang.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(java.lang.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(java.lang.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(java.lang.Object...)) поле заданного объекта, управляемого этим обновлятелем, с результатами применения заданной функции, возвращая обновленное значение.
abstract boolean weakCompareAndSet(T obj, int expect, int update)
Атомарно устанавливает поле заданного объекта, управляемого этим обновлятелем, в заданное обновленное значение, если текущее значение == ожидаемое значение.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

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(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, 2023, 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/21/docs/api/java.base/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.html

Spec-Zone.ru

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