Spec-Zone.ru › OpenJDK 24

Пакет java.util.concurrent.atomic

package java.util.concurrent.atomic
Небольшой набор классов, поддерживающих потокобезопасное программирование без блокировок для одиночных переменных. Экземпляры классов 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
Пакет Описание
java.util.concurrent
Утилиты, обычно полезные в конкурентном программировании.
java.util.concurrent.locks
Интерфейсы и классы, предоставляющие структуру для блокировки и ожидания условий, которая отличается от встроенной синхронизации и мониторов.
Класс Описание
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,V>
Утилита на основе рефлексии, которая позволяет атомарно обновлять назначенные 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

Spec-Zone.ru

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