Пакет java.util.concurrent.atomic
VarHandle операции. Экземпляры классов AtomicBoolean, AtomicInteger, AtomicLong и AtomicReference каждый обеспечивают доступ и обновления к одной переменной соответствующего типа. Каждый класс также предоставляет соответствующие вспомогательные методы для этого типа. Например, классы AtomicLong и AtomicInteger предоставляют атомарные методы инкремента. Одно из применений — генерация номеров последовательности, как в:
class Sequencer {
private final AtomicLong sequenceNumber
= new AtomicLong(17);
public long next() {
return sequenceNumber.getAndIncrement();
}
} Произвольные преобразования содержащего значения предоставляются как низкоуровневыми операциями чтение-модификация-запись, такими как compareAndSet, так и методами более высокого уровня, такими как getAndUpdate.
Эти классы не являются универсальными заменам
java.lang.Integer и родственных классов. Они не определяют методы, такие как equals, hashCode и
compareTo. Поскольку ожидается, что атомарные переменные будут изменены, они являются плохим выбором для ключей хеш-таблиц.
Классы AtomicIntegerArray, AtomicLongArray и AtomicReferenceArray дополнительно расширяют поддержку атомарных операций до массивов этих типов. Эти классы также примечательны тем, что обеспечивают volatile семантику доступа для элементов массива.
В дополнение к классам, представляющим одиночные значения и массивы, этот пакет содержит классы Updater, которые могут использоваться для получения compareAndSet и родственных операций для любого выбранного volatile поля любого выбранного класса. Эти классы появились до введения VarHandle и имеют более ограниченное применение. AtomicReferenceFieldUpdater, AtomicIntegerFieldUpdater и AtomicLongFieldUpdater — это основанные на рефлексии утилиты, обеспечивающие доступ к связанным типам полей. Они в основном полезны в атомарных структурах данных, в которых несколько volatile полей одного узла (например, ссылки узла дерева) независимо подвержены атомарным обновлениям. Эти классы обеспечивают большую гибкость в том, как и когда использовать атомарные обновления, ценой более неуклюжего отражения, менее удобного использования и более слабых гарантий.
Класс AtomicMarkableReference связывает один boolean с ссылкой. Например, этот бит может использоваться внутри структуры данных, чтобы означать, что объект, на который ссылаются, логически был удален. Класс AtomicStampedReference связывает целое значение с ссылкой. Это может быть использовано, например, для представления номеров версий, соответствующих сериям обновлений.
- Since:
- 1.5
| Класс | Описание |
|---|---|
| AtomicBoolean | boolean значение, которое может быть обновлено атомарно. |
| AtomicInteger | int значение, которое может быть обновлено атомарно. |
| AtomicIntegerArray | int массив, в котором элементы могут быть обновлены атомарно. |
| AtomicIntegerFieldUpdater<T> | Утилита на основе рефлексии, которая позволяет атомарно обновлять назначенные volatile int поля назначенных классов. |
| AtomicLong | long значение, которое может быть обновлено атомарно. |
| AtomicLongArray | long массив, в котором элементы могут быть обновлены атомарно. |
| AtomicLongFieldUpdater<T> | Утилита на основе рефлексии, которая позволяет атомарно обновлять назначенные volatile long поля назначенных классов. |
| AtomicMarkableReference<V> | AtomicMarkableReference сохраняет ссылку на объект вместе с флагом, который может быть обновлен атомарно. |
| AtomicReference<V> | Ссылка на объект, которая может быть обновлена атомарно. |
| AtomicReferenceArray<E> | Массив ссылок на объекты, в котором элементы могут быть обновлены атомарно. |
|
AtomicReferenceFieldUpdater<T, |
Утилита на основе рефлексии, которая позволяет атомарно обновлять назначенные volatile ссылки на поля назначенных классов. |
| AtomicStampedReference<V> | AtomicStampedReference сохраняет ссылку на объект вместе с целочисленной "меткой", которая может быть обновлена атомарно. |
| DoubleAccumulator | Одна или несколько переменных, которые вместе поддерживают текущее double значение, обновляемое с помощью предоставленной функции. |
| DoubleAdder | Одна или несколько переменных, которые вместе поддерживают начальную нулевую double сумму. |
| LongAccumulator | Одна или несколько переменных, которые вместе поддерживают текущее long значение, обновляемое с помощью предоставленной функции. |
| LongAdder | Одна или несколько переменных, которые вместе поддерживают начальную нулевую long сумму. |
© 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/package-summary.html