Spec-Zone.ru › OpenJDK 27

Класс AtomicMarkableReference<V>

java.lang.Object
java.util.concurrent.atomic.AtomicMarkableReference<V>
Параметры типа:
V - тип объекта, на который ссылается эта ссылка
public class AtomicMarkableReference<V> extends Object
AtomicMarkableReference хранит ссылку на объект вместе с битом-маркером, которые можно обновлять атомарно.

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

Начиная с:
1.5

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

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

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

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

Методы, объявленные в классе 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)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного времени.

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

AtomicMarkableReference

public AtomicMarkableReference(V initialRef, boolean initialMark)
Создает новый AtomicMarkableReference с заданными начальными значениями.
Параметры:
initialRef - исходная ссылка
initialMark - исходный маркер

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

getReference

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

isMarked

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

get

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

weakCompareAndSet

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

compareAndSet

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

set

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

attemptMark

public boolean attemptMark(V expectedReference, boolean newMark)
Атомарно устанавливает значение маркера в заданное новое значение, если текущая ссылка == ожидаемой ссылке. Любой вызов этой операции может завершиться неудачей (вернуть false) без видимой причины, однако повторные вызовы в ситуации, когда текущее значение соответствует ожидаемому и ни один другой поток также не пытается установить значение, в конечном итоге завершатся успешно.
Параметры:
expectedReference - ожидаемое значение ссылки
newMark - новое значение маркера
Возвращает:
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