Класс 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) | Создаёт новый |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/atomic/AtomicStampedReference.html