Spec-Zone.ru › OpenJDK 27

Класс AtomicLongFieldUpdater<T>

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

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

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

Начиная с:
1.5

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

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

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

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

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

AtomicLongFieldUpdater

protected AtomicLongFieldUpdater()
Защищённый конструктор, ничего не выполняющий, предназначенный для использования подклассами.

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

newUpdater

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

lazySet

public abstract void lazySet(T obj, long newValue)
В конечном итоге устанавливает в поле указанного объекта, управляемом этим средством обновления, заданное обновлённое значение.
Параметры:
obj — объект, поле которого нужно установить
newValue — новое значение
Начиная с:
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(Object...)) и возвращает предыдущее значение. Функция должна быть свободна от побочных эффектов, поскольку при неудачных попытках обновления из-за конкуренции потоков её могут применить повторно.
Параметры:
obj — объект, поле которого нужно получить и установить
updateFunction — функция без побочных эффектов
Возвращает:
предыдущее значение
Начиная с:
1.8

updateAndGet

public final long updateAndGet(T obj, LongUnaryOperator updateFunction)
Атомарно обновляет поле указанного объекта, управляемое этим средством обновления, результатом применения заданной функции (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)) и возвращает обновлённое значение. Функция должна быть свободна от побочных эффектов, поскольку при неудачных попытках обновления из-за конкуренции потоков её могут применить повторно.
Параметры:
obj — объект, поле которого нужно получить и установить
updateFunction — функция без побочных эффектов
Возвращает:
обновлённое значение
Начиная с:
1.8

getAndAccumulate

public final long getAndAccumulate(T obj, long x, LongBinaryOperator accumulatorFunction)
Атомарно обновляет поле указанного объекта, управляемое этим средством обновления, результатом применения заданной функции к текущему и заданному значениям (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)) и возвращает предыдущее значение. Функция должна быть свободна от побочных эффектов, поскольку при неудачных попытках обновления из-за конкуренции потоков её могут применить повторно. Функция применяется к текущему значению в качестве первого аргумента и к заданному обновлению в качестве второго аргумента.
Параметры:
obj — объект, поле которого нужно получить и установить
x — значение обновления
accumulatorFunction — функция двух аргументов без побочных эффектов
Возвращает:
предыдущее значение
Начиная с:
1.8

accumulateAndGet

public final long accumulateAndGet(T obj, long x, LongBinaryOperator 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