java.lang.Object
java.util.concurrent.atomic.AtomicStampedReference<V>
- 类型参数:
-
V
- 此引用所引用对象的类型
AtomicStampedReference
保持一个对象引用和一个整数“标记”,可以原子方式更新。
实现注意事项: 此实现通过创建表示“装箱化”[引用,整数]对的内部对象来维护标记引用。
- 自 JDK 版本:
- 1.5
-
Constructor Summary
ConstructorDescriptionAtomicStampedReference
(V initialRef, int initialStamp) 创建一个具有给定初始值的新AtomicStampedReference
。 -
Method Summary
Modifier and TypeMethodDescriptionboolean
attemptStamp
(V expectedReference, int newStamp) 如果当前引用等于预期引用,则将标记的值原子设置为给定的更新值。boolean
compareAndSet
(V expectedReference, V newReference, int expectedStamp, int newStamp) 如果当前引用等于预期引用且当前标记等于预期标记,则将引用和标记的值原子设置为给定的更新值。get
(int[] stampHolder) 返回引用和标记的当前值。返回引用的当前值。int
getStamp()
返回标记的当前值。void
无条件地设置引用和标记的值。boolean
weakCompareAndSet
(V expectedReference, V newReference, int expectedStamp, int newStamp) 如果当前引用等于预期引用且当前标记等于预期标记,则将引用和标记的值原子设置为给定的更新值。
-
Constructor Details
-
AtomicStampedReference
创建一个具有给定初始值的新AtomicStampedReference
。- 参数:
-
initialRef
- 初始引用 -
initialStamp
- 初始标记
-
-
Method Details
-
getReference
返回引用的当前值。- 返回:
- 引用的当前值
-
getStamp
public int getStamp()返回标记的当前值。- 返回:
- 标记的当前值
-
get
返回引用和标记的当前值。典型用法是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
如果当前引用等于预期引用且当前标记等于预期标记,则将引用和标记的值原子设置为给定的更新值。- 参数:
-
expectedReference
- 引用的预期值 -
newReference
- 引用的新值 -
expectedStamp
- 标记的预期值 -
newStamp
- 标记的新值 - 返回:
-
如果成功则返回
true
-
set
无条件地设置引用和标记的值。- 参数:
-
newReference
- 引用的新值 -
newStamp
- 标记的新值
-
attemptStamp
如果当前引用等于预期引用,则将标记的值原子设置为给定的更新值。此操作的任何调用可能会偶然失败(返回false
),但在当前值保持预期值且没有其他线程尝试设置值时的重复调用最终会成功。- 参数:
-
expectedReference
- 引用的预期值 -
newStamp
- 标记的新值 - 返回:
-
如果成功则返回
true
-