- 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。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 booleanattemptMark(V expectedReference, boolean newMark)如果当前引用为预期引用的当前引用为==,则以原子方式将标记的值设置为给定的更新值。booleancompareAndSet(V expectedReference, V newReference, boolean expectedMark, boolean newMark)如果当前参考值为==并且当前标记等于预期标记,则以原子方式将参考值和标记的值设置为给定的更新值。Vget(boolean[] markHolder)返回引用和标记的当前值。VgetReference()返回引用的当前值。booleanisMarked()返回标记的当前值。voidset(V newReference, boolean newMark)无条件地设置引用和标记的值。booleanweakCompareAndSet(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如果成功
-
-