Класс AtomicLongFieldUpdater<T>
- Параметры типа:
T— тип объекта, содержащего обновляемое поле
public abstract class AtomicLongFieldUpdater<T> extends Object
volatile long заданных классов и предоставляющая часть функциональности класса VarHandle, который следует использовать вместо неё. Этот класс предназначен для использования в атомарных структурах данных, в которых несколько полей одного узла независимо подлежат атомарному обновлению. Обратите внимание, что гарантии метода compareAndSet в этом классе слабее, чем в других атомарных классах. Поскольку этот класс не может гарантировать, что все обращения к полю подходят для атомарного доступа, он обеспечивает атомарность только относительно других вызовов compareAndSet и set для того же средства обновления.
Передача в качестве аргументов объектов типа T, не являющихся экземплярами класса, переданного в newUpdater(Class, String), приведёт к выбросу исключения ClassCastException.
- Начиная с:
- 1.5
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Защищённый конструктор, ничего не выполняющий, предназначенный для использования подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final long |
accumulateAndGet |
Атомарно обновляет поле указанного объекта, управляемое этим средством обновления, результатом применения заданной функции к текущему и заданному значениям (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)) и возвращает обновлённое значение. |
long |
addAndGet |
Атомарно прибавляет заданное значение к текущему значению поля указанного объекта, управляемого этим средством обновления. |
abstract boolean |
compareAndSet |
Атомарно устанавливает в поле указанного объекта, управляемом этим средством обновления, заданное обновлённое значение, если текущее значение == ожидаемому значению. |
long |
decrementAndGet |
Атомарно уменьшает на единицу текущее значение поля указанного объекта, управляемого этим средством обновления. |
abstract long |
get |
Возвращает текущее значение поля указанного объекта, управляемого этим средством обновления. |
final long |
getAndAccumulate |
Атомарно обновляет поле указанного объекта, управляемое этим средством обновления, результатом применения заданной функции к текущему и заданному значениям (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)) и возвращает предыдущее значение. |
long |
getAndAdd |
Атомарно прибавляет заданное значение к текущему значению поля указанного объекта, управляемого этим средством обновления. |
long |
getAndDecrement |
Атомарно уменьшает на единицу текущее значение поля указанного объекта, управляемого этим средством обновления. |
long |
getAndIncrement |
Атомарно увеличивает на единицу текущее значение поля указанного объекта, управляемого этим средством обновления. |
long |
getAndSet |
Атомарно устанавливает в поле указанного объекта, управляемом этим средством обновления, заданное значение и возвращает прежнее значение. |
final long |
getAndUpdate |
Атомарно обновляет поле указанного объекта, управляемое этим средством обновления, результатом применения заданной функции (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)) и возвращает предыдущее значение. |
long |
incrementAndGet |
Атомарно увеличивает на единицу текущее значение поля указанного объекта, управляемого этим средством обновления. |
abstract void |
lazySet |
В конечном итоге устанавливает в поле указанного объекта, управляемом этим средством обновления, заданное обновлённое значение. |
static <U> AtomicLongFieldUpdater |
newUpdater |
Создаёт и возвращает средство обновления для объектов с заданным полем. |
abstract void |
set |
Устанавливает в поле указанного объекта, управляемом этим средством обновления, заданное обновлённое значение. |
final long |
updateAndGet |
Атомарно обновляет поле указанного объекта, управляемое этим средством обновления, результатом применения заданной функции (с эффектами памяти, указанными в VarHandle.compareAndSet(Object...)) и возвращает обновлённое значение. |
abstract boolean |
weakCompareAndSet |
Атомарно устанавливает в поле указанного объекта, управляемом этим средством обновления, заданное обновлённое значение, если текущее значение == ожидаемому значению. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
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 |
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt, либо пока не истечёт определённый промежуток реального времени. |
final void |
wait |
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt, либо пока не истечёт определённый промежуток реального времени. |
Подробное описание конструкторов
AtomicLongFieldUpdater
protected AtomicLongFieldUpdater()
Подробное описание методов
newUpdater
public static <U> AtomicLongFieldUpdater<U> newUpdater(Class<U> tclass, String fieldName)
- Параметры типа:
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)
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
© 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.