Spec-Zone.ru › OpenJDK 8

Класс AtomicIntegerFieldUpdater<T>

  • java.lang.Object
    • java.util.concurrent.atomic.AtomicIntegerFieldUpdater<T>
Параметры типа:
T - Тип объекта, содержащего обновляемое поле

public abstract class AtomicIntegerFieldUpdater<T>
extends Object

Утилита на основе рефлексии, которая позволяет выполнять атомарные обновления указанных volatile int полей указанных классов. Этот класс предназначен для использования в атомарных структурах данных, в которых несколько полей одного узла независимо подвергаются атомарным обновлениям.

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

С:
1.5

Конструкторы

Модификатор Конструктор и описание
protected AtomicIntegerFieldUpdater()

Защищенный конструктор без действий, предназначенный для использования подклассами.

Методы

Модификатор и тип Метод и описание
int accumulateAndGet(T obj, int x, IntBinaryOperator accumulatorFunction)

Атомарно обновляет поле заданного объекта, управляемого этим апдейтером, результатами применения заданной функции к текущему и заданному значениям, возвращая обновленное значение.

int addAndGet(T obj, int delta)

Атомарно добавляет заданное значение к текущему значению поля заданного объекта, управляемого этим апдейтером.

abstract boolean compareAndSet(T obj, int expect, int update)

Атомарно устанавливает поле заданного объекта, управляемого этим апдейтером, в заданное обновлённое значение, если текущее значение == ожидаемого значения.

int decrementAndGet(T obj)

Атомарно декрементирует на единицу текущее значение поля заданного объекта, управляемого этим апдейтером.

abstract int get(T obj)

Получает текущее значение, хранящееся в поле заданного объекта, управляемого этим апдейтером.

int getAndAccumulate(T obj, int x, IntBinaryOperator accumulatorFunction)

Атомарно обновляет поле заданного объекта, управляемого этим апдейтером, результатами применения заданной функции к текущему и заданному значениям, возвращая предыдущее значение.

int getAndAdd(T obj, int delta)

Атомарно добавляет заданное значение к текущему значению поля заданного объекта, управляемого этим апдейтером.

int getAndDecrement(T obj)

Атомарно декрементирует на единицу текущее значение поля заданного объекта, управляемого этим апдейтером.

int getAndIncrement(T obj)

Атомарно инкрементирует на единицу текущее значение поля заданного объекта, управляемого этим апдейтером.

int getAndSet(T obj, int newValue)

Атомарно устанавливает поле заданного объекта, управляемого этим апдейтером, в заданное значение и возвращает старое значение.

int getAndUpdate(T obj, IntUnaryOperator updateFunction)

Атомарно обновляет поле заданного объекта, управляемого этим апдейтером, результатами применения заданной функции, возвращая предыдущее значение.

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)

Устанавливает поле заданного объекта, управляемого этим апдейтером, в заданное обновлённое значение.

int updateAndGet(T obj, IntUnaryOperator updateFunction)

Атомарно обновляет поле заданного объекта, управляемого этим апдейтером, результатами применения заданной функции, возвращая обновленное значение.

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 integer
RuntimeException - с вложенным исключением на основе рефлексии, если класс не содержит поле или имеет неправильный тип, или поле недоступно для вызывающего объекта согласно правилам доступа языка Java

compareAndSet

public abstract boolean compareAndSet(T obj,
                                      int expect,
                                      int update)

Атомарно устанавливает поле данного объекта, управляемого этим апдейтером, в заданное значение обновления, если текущее значение == ожидаемого значения. Этот метод гарантирует атомарность по отношению к другим вызовам compareAndSet и set, но не обязательно по отношению к другим изменениям поля.

Параметры:
obj - объект, чьё поле необходимо условно установить
expect - ожидаемое значение
update - новое значение
Возвращает:
true если успешно
Исключения:
ClassCastException - если obj не является экземпляром класса, содержащего поле, установленное в конструкторе

weakCompareAndSet

public abstract boolean weakCompareAndSet(T obj,
                                          int expect,
                                          int update)

Атомарно устанавливает поле данного объекта, управляемого этим апдейтером, в заданное значение обновления, если текущее значение == ожидаемого значения. Этот метод гарантирует атомарность по отношению к другим вызовам compareAndSet и set, но не обязательно по отношению к другим изменениям поля.

Может случайным образом завершиться неудачей и не предоставляет гарантий упорядочивания, поэтому является редким альтернативом compareAndSet.

Параметры:
obj - объект, чьё поле необходимо условно установить
expect - ожидаемое значение
update - новое значение
Возвращает:
true если успешно
Исключения:
ClassCastException - если obj не является экземпляром класса, содержащего поле, установленное в конструкторе

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)

Атомарно обновляет поле данного объекта, управляемого этим апдейтером, результатом применения заданной функции, возвращая предыдущее значение. Функция должна быть без побочных эффектов, так как она может быть повторно применена, когда попытки обновления завершаются неудачей из-за конкуренции между потоками.

Параметры:
obj - объект, чьё поле получить и установить
updateFunction - функция без побочных эффектов
Возвращает:
предыдущее значение
С:
1.8

updateAndGet

public final int updateAndGet(T obj,
                              IntUnaryOperator updateFunction)

Атомарно обновляет поле данного объекта, управляемого этим апдейтером, результатом применения заданной функции, возвращая обновлённое значение. Функция должна быть без побочных эффектов, так как она может быть повторно применена, когда попытки обновления завершаются неудачей из-за конкуренции между потоками.

Параметры:
obj - объект, чьё поле получить и установить
updateFunction - функция без побочных эффектов
Возвращает:
обновлённое значение
С:
1.8

getAndAccumulate

public final int getAndAccumulate(T obj,
                                  int x,
                                  IntBinaryOperator accumulatorFunction)

Атомарно обновляет поле данного объекта, управляемого этим апдейтером, результатом применения заданной функции к текущему и заданному значениям, возвращая предыдущее значение. Функция должна быть без побочных эффектов, так как она может быть повторно применена, когда попытки обновления завершаются неудачей из-за конкуренции между потоками. Функция применяется с текущим значением в качестве первого аргумента и заданным обновлением в качестве второго аргумента.

Параметры:
obj - объект, чьё поле получить и установить
x - значение обновления
accumulatorFunction - функция без побочных эффектов от двух аргументов
Возвращает:
предыдущее значение
С:
1.8

accumulateAndGet

public final int accumulateAndGet(T obj,
                                  int x,
                                  IntBinaryOperator accumulatorFunction)

Атомарно обновляет поле данного объекта, управляемого этим апдейтером, результатом применения заданной функции к текущему и заданному значениям, возвращая обновлённое значение. Функция должна быть без побочных эффектов, так как она может быть повторно применена, когда попытки обновления завершаются неудачей из-за конкуренции между потоками. Функция применяется с текущим значением в качестве первого аргумента и заданным обновлением в качестве второго аргумента.

Параметры:
obj - объект, чьё поле получить и установить
x - значение обновления
accumulatorFunction - функция без побочных эффектов от двух аргументов
Возвращает:
обновлённое значение
С:
1.8

© 1993, 2020, 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