Класс AtomicIntegerFieldUpdater<T>
- java.lang.Object
-
- java.util.concurrent.atomic.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 | 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при успехе
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, 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.html