Spec-Zone.ru › OpenJDK 8

Класс AtomicLongFieldUpdater<T>

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

public abstract class AtomicLongFieldUpdater<T>
extends Object

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

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

Since:
1.5

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

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

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

Методы

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

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

long addAndGet(T obj, long delta)

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

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

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

long decrementAndGet(T obj)

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

abstract long get(T obj)

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

long getAndAccumulate(T obj, long x, LongBinaryOperator accumulatorFunction)

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

long getAndAdd(T obj, long delta)

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

long getAndDecrement(T obj)

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

long getAndIncrement(T obj)

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

long getAndSet(T obj, long newValue)

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

long getAndUpdate(T obj, LongUnaryOperator updateFunction)

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

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)

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

long updateAndGet(T obj, LongUnaryOperator updateFunction)

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

abstract boolean weakCompareAndSet(T obj, long expect, long update)

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

Методы, унаследованные от класса java.lang.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 в случае успеха
Исключения:
ClassCastException - если obj не является экземпляром класса, содержащего поле, установленное в конструкторе

weakCompareAndSet

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

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

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

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

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)

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

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

updateAndGet

public final long updateAndGet(T obj,
                               LongUnaryOperator updateFunction)

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

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

getAndAccumulate

public final long getAndAccumulate(T obj,
                                   long x,
                                   LongBinaryOperator accumulatorFunction)

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

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

accumulateAndGet

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