Spec-Zone.ru › OpenJDK 8

Класс AtomicStampedReference<V>

  • java.lang.Object
    • java.util.concurrent.atomic.AtomicStampedReference<V>
Type Parameters:
V - Тип объекта, на который ссылается эта ссылка

public class AtomicStampedReference<V>
extends Object

Объект AtomicStampedReference хранит ссылку на объект вместе со значением целочисленной «метки», которые можно обновлять атомарно.

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

Since:
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)

Атомарно устанавливает значение и ссылки, и метки на заданные значения обновления, если текущая ссылка == ожидаемой ссылке и текущая метка равна ожидаемой метке.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

AtomicStampedReference

public AtomicStampedReference(V initialRef,
                              int initialStamp)

Создает новый AtomicStampedReference с заданными начальными значениями.

Parameters:
initialRef - начальная ссылка
initialStamp - начальная метка

Методы

getReference

public V getReference()

Возвращает текущее значение ссылки.

Returns:
текущее значение ссылки

getStamp

public int getStamp()

Возвращает текущее значение метки.

Returns:
текущее значение метки

get

public V get(int[] stampHolder)

Возвращает текущие значения и ссылки, и метки. Типичное использование — int[1] holder; ref = v.get(holder); .

Parameters:
stampHolder - массив размером не менее одного. По возвращении stampholder[0] будет содержать значение метки.
Returns:
текущее значение ссылки

weakCompareAndSet

public boolean weakCompareAndSet(V expectedReference,
                                 V newReference,
                                 int expectedStamp,
                                 int newStamp)

Атомарно устанавливает значение и ссылки, и метки на заданные значения обновления, если текущая ссылка == ожидаемой ссылке и текущая метка равна ожидаемой метке.

Возможно ложное срабатывание и не предоставляет гарантий упорядочения, поэтому редко является подходящей альтернативой compareAndSet.

Parameters:
expectedReference - ожидаемое значение ссылки
newReference - новое значение для ссылки
expectedStamp - ожидаемое значение метки
newStamp - новое значение для метки
Returns:
true в случае успеха

compareAndSet

public boolean compareAndSet(V expectedReference,
                             V newReference,
                             int expectedStamp,
                             int newStamp)

Атомарно устанавливает значение и ссылки, и метки на заданные значения обновления, если текущая ссылка == ожидаемой ссылке и текущая метка равна ожидаемой метке.

Parameters:
expectedReference - ожидаемое значение ссылки
newReference - новое значение для ссылки
expectedStamp - ожидаемое значение метки
newStamp - новое значение для метки
Returns:
true в случае успеха

set

public void set(V newReference,
                int newStamp)

Безусловно устанавливает значение и ссылки, и метки.

Parameters:
newReference - новое значение для ссылки
newStamp - новое значение для метки

attemptStamp

public boolean attemptStamp(V expectedReference,
                            int newStamp)

Атомарно устанавливает значение метки на заданное значение обновления, если текущая ссылка == ожидаемой ссылке. Любое данное обращение к этой операции может завершиться неудачей (вернуть false) по случайности, но многократное обращение, когда текущее значение соответствует ожидаемому значению и ни один другой поток не пытается установить значение, в конечном итоге приведет к успеху.

Parameters:
expectedReference - ожидаемое значение ссылки
newStamp - новое значение для метки
Returns:
true в случае успеха

© 1993, 2020, 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