Класс AtomicLongFieldUpdater<T>
- Type Parameters:
T- Тип объекта, содержащего обновляемое поле
public abstract class AtomicLongFieldUpdater<T> extends Object
volatile long поля указанных классов. Этот класс предназначен для использования в атомарных структурах данных, в которых несколько полей одного узла независимо подвергаются атомарным обновлениям. Обратите внимание, что гарантии метода compareAndSet в этом классе слабее, чем в других атомарных классах. Поскольку этот класс не может гарантировать, что все использования поля подходят для целей атомарного доступа, он может гарантировать атомарность только по отношению к другим вызовам compareAndSet и set для одного и того же обновлителя.
Объектные аргументы для параметров типа T, которые не являются экземплярами класса, переданного в newUpdater(java.lang.Class<U>, java.lang.String), приведут к тому, что будет брошено исключение ClassCastException.
- Since:
- 1.5
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Защищенный конструктор без действий, используемый подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final long |
accumulateAndGet |
Атомарно обновляет (с эффектами памяти, как указано в VarHandle.compareAndSet(java.lang.Object...)) поле данного объекта, управляемого этим обновлителем, с результатами применения заданной функции к текущему и заданным значениям, возвращая обновленное значение. |
long |
addAndGet |
Атомарно добавляет данное значение к текущему значению поля данного объекта, управляемого этим обновлителем. |
abstract boolean |
compareAndSet |
Атомарно устанавливает поле данного объекта, управляемого этим обновлителем, в заданное обновленное значение, если текущее значение == ожидаемое значение. |
long |
decrementAndGet |
Атомарно декрементирует текущее значение поля данного объекта, управляемого этим обновлителем, на единицу. |
abstract long |
get |
Возвращает текущее значение, хранящееся в поле данного объекта, управляемого этим обновлителем. |
final long |
getAndAccumulate |
Атомарно обновляет (с эффектами памяти, как указано в VarHandle.compareAndSet(java.lang.Object...)) поле данного объекта, управляемого этим обновлителем, с результатами применения заданной функции к текущему и заданным значениям, возвращая предыдущее значение. |
long |
getAndAdd |
Атомарно добавляет данное значение к текущему значению поля данного объекта, управляемого этим обновлителем. |
long |
getAndDecrement |
Атомарно декрементирует текущее значение поля данного объекта, управляемого этим обновлителем, на единицу. |
long |
getAndIncrement |
Атомарно инкрементирует текущее значение поля данного объекта, управляемого этим обновлителем, на единицу. |
long |
getAndSet |
Атомарно устанавливает поле данного объекта, управляемого этим обновлителем, в заданное значение и возвращает старое значение. |
final long |
getAndUpdate |
Атомарно обновляет (с эффектами памяти, как указано в VarHandle.compareAndSet(java.lang.Object...)) поле данного объекта, управляемого этим обновлителем, с результатами применения заданной функции, возвращая предыдущее значение. |
long |
incrementAndGet |
Атомарно инкрементирует текущее значение поля данного объекта, управляемого этим обновлителем, на единицу. |
abstract void |
lazySet |
В конечном итоге устанавливает поле данного объекта, управляемого этим обновлителем, в заданное обновленное значение. |
static <U> AtomicLongFieldUpdater |
newUpdater |
Создает и возвращает обновлитель для объектов с заданным полем. |
abstract void |
set |
Устанавливает поле данного объекта, управляемого этим обновлителем, в заданное обновленное значение. |
final long |
updateAndGet |
Атомарно обновляет (с эффектами памяти, как указано в VarHandle.compareAndSet(java.lang.Object...)) поле данного объекта, управляемого этим обновлителем, с результатами применения заданной функции, возвращая обновленное значение. |
abstract boolean |
weakCompareAndSet |
Атомарно устанавливает поле данного объекта, управляемого этим обновлителем, в заданное обновленное значение, если текущее значение == ожидаемое значение. |
Подробное описание конструкторов
AtomicLongFieldUpdater
protected AtomicLongFieldUpdater()
Подробное описание методов
newUpdater
public static <U> AtomicLongFieldUpdater<U> newUpdater(Class<U> tclass, String fieldName)
- Параметры типа:
U- тип экземпляров tclass- Параметры:
-
tclass- класс объектов, содержащих поле -
fieldName- имя поля, которое нужно обновить - Возвращает:
- обновляющий объект
- Исключения:
-
IllegalArgumentException- если поле не является переменной типа volatile long -
RuntimeException- с вложенным исключением на основе рефлексии, если класс не содержит поле или имеет неправильный тип, или поле недоступно для вызывающего объекта в соответствии с контролем доступа к Java-языку
compareAndSet
public abstract boolean compareAndSet(T obj, long expect, long update)
== ожидаемого значения. Этот метод гарантированно атомарный относительно других вызовов compareAndSet и set, но не обязательно относительно других изменений в поле.- Параметры:
-
obj- Объект, чьё поле необходимо условно установить -
expect- ожидаемое значение -
update- новое значение - Возвращает:
-
true, если успешно
weakCompareAndSet
public abstract boolean weakCompareAndSet(T obj, long expect, long update)
== ожидаемого значения. Этот метод гарантированно атомарный относительно других вызовов compareAndSet и set, но не обязательно относительно других изменений в поле. Эта операция может аварийно завершиться и не обеспечивает гарантий упорядоченности, поэтому это лишь редкая альтернатива compareAndSet.
- Параметры:
-
obj- Объект, чьё поле необходимо условно установить -
expect- ожидаемое значение -
update- новое значение - Возвращает:
-
true, если успешно
set
public abstract void set(T obj, long newValue)
compareAndSet.- Параметры:
-
obj- Объект, чьё поле необходимо установить -
newValue- новое значение
lazySet
public abstract void lazySet(T obj, long newValue)
- Параметры:
-
obj- Объект, чьё поле необходимо установить -
newValue- новое значение - C момента:
- 1.6
get
public abstract long get(T obj)
- Параметры:
-
obj- Объект, чьё поле необходимо получить - Возвращает:
- текущее значение
getAndSet
public long getAndSet(T obj, long newValue)
- Параметры:
-
obj- Объект, чьё поле необходимо получить и установить -
newValue- новое значение - Возвращает:
- предыдущее значение
getAndIncrement
public long getAndIncrement(T obj)
- Параметры:
-
obj- Объект, чьё поле необходимо получить и установить - Возвращает:
- предыдущее значение
getAndDecrement
public long getAndDecrement(T obj)
- Параметры:
-
obj- Объект, чьё поле необходимо получить и установить - Возвращает:
- предыдущее значение
getAndAdd
public long getAndAdd(T obj, long delta)
- Параметры:
-
obj- Объект, чьё поле необходимо получить и установить -
delta- значение для добавления - Возвращает:
- предыдущее значение
incrementAndGet
public long incrementAndGet(T obj)
- Параметры:
-
obj- Объект, чьё поле необходимо получить и установить - Возвращает:
- обновлённое значение
decrementAndGet
public long decrementAndGet(T obj)
- Параметры:
-
obj- Объект, чьё поле необходимо получить и установить - Возвращает:
- обновлённое значение
addAndGet
public long addAndGet(T obj, long delta)
- Параметры:
-
obj- Объект, чьё поле необходимо получить и установить -
delta- значение для добавления - Возвращает:
- обновлённое значение
getAndUpdate
public final long getAndUpdate(T obj, LongUnaryOperator updateFunction)
VarHandle.compareAndSet(java.lang.Object...)) поле заданного объекта, управляемого этим обновляющим объектом, с результатом применения заданной функции, возвращая предыдущее значение. Функция должна быть без побочных эффектов, так как она может быть повторно применена, когда попытки обновления терпят неудачу из-за конкуренции между потоками.- Параметры:
-
obj- Объект, чьё поле необходимо получить и установить -
updateFunction- функция без побочных эффектов - Возвращает:
- предыдущее значение
- C момента:
- 1.8
updateAndGet
public final long updateAndGet(T obj, LongUnaryOperator updateFunction)
VarHandle.compareAndSet(java.lang.Object...)) поле заданного объекта, управляемого этим обновляющим объектом, с результатом применения заданной функции, возвращая обновлённое значение. Функция должна быть без побочных эффектов, так как она может быть повторно применена, когда попытки обновления терпят неудачу из-за конкуренции между потоками.- Параметры:
-
obj- Объект, чьё поле необходимо получить и установить -
updateFunction- функция без побочных эффектов - Возвращает:
- обновлённое значение
- C момента:
- 1.8
getAndAccumulate
public final long getAndAccumulate(T obj, long x, LongBinaryOperator accumulatorFunction)
VarHandle.compareAndSet(java.lang.Object...)) поле заданного объекта, управляемого этим обновляющим объектом, с результатом применения заданной функции к текущему и заданному значениям, возвращая предыдущее значение. Функция должна быть без побочных эффектов, так как она может быть повторно применена, когда попытки обновления терпят неудачу из-за конкуренции между потоками. Функция применяется с текущим значением в качестве первого аргумента и заданным обновлением в качестве второго аргумента.- Параметры:
-
obj- Объект, чьё поле необходимо получить и установить -
x- значение обновления -
accumulatorFunction- функция без побочных эффектов от двух аргументов - Возвращает:
- предыдущее значение
- C момента:
- 1.8
accumulateAndGet
public final long accumulateAndGet(T obj, long x, LongBinaryOperator accumulatorFunction)
VarHandle.compareAndSet(java.lang.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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/atomic/AtomicLongFieldUpdater.html