Spec-Zone.ru › OpenJDK 25

Class AtomicLongFieldUpdater<T>

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

Обратите внимание, что гарантии метода 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

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

AtomicLongFieldUpdater

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

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

newUpdater

public static <U> AtomicLongFieldUpdater<U> newUpdater(Class<U> tclass, String fieldName)
Создаёт и возвращает средство обновления для объектов с заданным полем. Аргумент Class необходим для проверки соответствия типов отражения и обобщённых типов.
Параметры типа:
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)
Устанавливает заданное обновлённое значение поля заданного объекта, управляемого этим средством обновления. Гарантируется, что эта операция действует как 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/atomic/AtomicLongFieldUpdater.html

Spec-Zone.ru

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