- java.lang.Object
-
- java.util.concurrent.atomic.AtomicMarkableReference<V>
-
- 参数类型
-
V
- 此引用引用的对象类型
public class AtomicMarkableReference<V> extends Object
AtomicMarkableReference
维护对象引用以及标记位,可以原子方式更新。实现说明:此实现通过创建表示“盒装”[引用,布尔]对的内部对象来维护可标记引用。
- 从以下版本开始:
- 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)
如果当前参考值为==
并且当前标记等于预期标记,则以原子方式将参考值和标记的值设置为给定的更新值。
-
-
-
构造方法详细信息
-
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
的合适替代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
如果成功
-
-