- java.lang.Object
-
- java.util.concurrent.atomic.AtomicMarkableReference<V>
-
- 参数类型
-
V
- 此引用引用的对象的类型
public class AtomicMarkableReference<V> extends Object
一个AtomicMarkableReference
维护一个对象引用以及可以原子更新的标记位。实现注意:此实现通过创建表示“boxed”[引用,布尔]对的内部对象来维护可标记引用。
- 从以下版本开始:
- 1.5
-
-
构造方法摘要
构造方法 Constructor 描述 AtomicMarkableReference(V initialRef, boolean initialMark)
用给定的初始值创建一个新的AtomicMarkableReference
。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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)
如果当前引用为期望引用的==
,并且当前标记等于预期标记,则将引用和标记的值原子设置为给定更新值。
-
-
-
构造方法详细信息
-
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)
如果当前引用为期望引用的==
并且当前标记等于预期标记,则将引用和标记的值原子设置为给定的更新值。May fail spuriously and does not provide ordering guarantees ,所以很少适合替代
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
如果成功
-
-