Spec-Zone.ru › OpenJDK 27

Класс AtomicStampedReference<V>

java.lang.Object
java.util.concurrent.atomic.AtomicStampedReference<V>
Параметры типа:
V — тип объекта, на который ссылается эта ссылка
public class AtomicStampedReference<V> extends Object
Объект AtomicStampedReference хранит ссылку на объект вместе с целочисленной «меткой», которую можно обновлять атомарно.

Примечание по реализации: в этой реализации помеченные ссылки хранятся с помощью создания внутренних объектов, представляющих «упакованные» пары [ссылка, целое число].

Начиная с:
1.5

Краткое описание конструкторов

Конструктор Описание
AtomicStampedReference(V initialRef, int initialStamp)
Создает новый AtomicStampedReference с указанными начальными значениями.

Краткое описание методов

Модификатор и тип Метод Описание
boolean attemptStamp(V expectedReference, int newStamp)
Атомарно устанавливает значение метки в указанное новое значение, если текущая ссылка == ожидаемой ссылке.
boolean compareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)
Атомарно устанавливает значения ссылки и метки в указанные новые значения, если текущая ссылка == ожидаемой ссылке, а текущая метка равна ожидаемой метке.
V get(int[] stampHolder)
Возвращает текущие значения ссылки и метки.
V getReference()
Возвращает текущее значение ссылки.
int getStamp()
Возвращает текущее значение метки.
void set(V newReference, int newStamp)
Безусловно устанавливает значения ссылки и метки.
boolean weakCompareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)
Атомарно устанавливает значения ссылки и метки в указанные новые значения, если текущая ссылка == ожидаемой ссылке, а текущая метка равна ожидаемой метке.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

AtomicStampedReference

public AtomicStampedReference(V initialRef, int initialStamp)
Создает новый AtomicStampedReference с указанными начальными значениями.
Параметры:
initialRef — исходная ссылка
initialStamp — исходная метка

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

getReference

public V getReference()
Возвращает текущее значение ссылки.
Возвращает:
текущее значение ссылки

getStamp

public int getStamp()
Возвращает текущее значение метки.
Возвращает:
текущее значение метки

get

public V get(int[] stampHolder)
Возвращает текущие значения ссылки и метки. Типичный способ использования: int[1] holder; ref = v.get(holder); .
Параметры:
stampHolder — массив размером не менее одного элемента. После возврата метода в stampHolder[0] будет содержаться значение метки.
Возвращает:
текущее значение ссылки

weakCompareAndSet

public boolean weakCompareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)
Атомарно устанавливает значения ссылки и метки в указанные новые значения, если текущая ссылка == ожидаемой ссылке, а текущая метка равна ожидаемой метке. Эта операция может завершиться случайной неудачей и не предоставляет гарантий упорядочивания, поэтому лишь изредка является подходящей альтернативой compareAndSet.
Параметры:
expectedReference — ожидаемое значение ссылки
newReference — новое значение ссылки
expectedStamp — ожидаемое значение метки
newStamp — новое значение метки
Возвращает:
true в случае успеха

compareAndSet

public boolean compareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)
Атомарно устанавливает значения ссылки и метки в указанные новые значения, если текущая ссылка == ожидаемой ссылке, а текущая метка равна ожидаемой метке.
Параметры:
expectedReference — ожидаемое значение ссылки
newReference — новое значение ссылки
expectedStamp — ожидаемое значение метки
newStamp — новое значение метки
Возвращает:
true в случае успеха

set

public void set(V newReference, int newStamp)
Безусловно устанавливает значения ссылки и метки.
Параметры:
newReference — новое значение ссылки
newStamp — новое значение метки

attemptStamp

public boolean attemptStamp(V expectedReference, int newStamp)
Атомарно устанавливает значение метки в указанное новое значение, если текущая ссылка == ожидаемой ссылке. Любой вызов этой операции может случайно завершиться неудачей (вернуть false), однако при повторном вызове, когда текущее значение соответствует ожидаемому и ни один другой поток также не пытается установить значение, операция в конечном итоге завершится успешно.
Параметры:
expectedReference — ожидаемое значение ссылки
newStamp — новое значение метки
Возвращает:
true в случае успеха

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, где содержатся более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторское право © 1993, 2026, 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.

Spec-Zone.ru

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