V
- 此引用引用的对象的类型
public class AtomicMarkableReference<V> extends Object
AtomicMarkableReference
维护对象引用以及可以原子更新的标记位。
实现注意:此实现通过创建表示“boxed”[引用,布尔]对的内部对象来维护可标记引用。
Constructor and Description |
---|
AtomicMarkableReference(V initialRef, boolean initialMark)
用给定的初始值创建一个新的
AtomicMarkableReference 。
|
Modifier and Type | Method and Description |
---|---|
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)
以原子方式设置该引用和标记给定的更新值的值,如果当前的参考是
== 至预期的参考和当前标记等于预期标记。
|
public AtomicMarkableReference(V initialRef, boolean initialMark)
AtomicMarkableReference
。
initialRef
- 初始参考
initialMark
- 初始标记
public V getReference()
public boolean isMarked()
public V get(boolean[] markHolder)
boolean[1] holder; ref = v.get(holder);
。
markHolder
- 至少有一个大小的数组。
回报时, markholder[0]
将持有该商标的价值。
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
如果成功
public boolean compareAndSet(V expectedReference, V newReference, boolean expectedMark, boolean newMark)
==
至预期的参考和当前标记等于预期标记。
expectedReference
- 参考的预期值
newReference
- 参考的新值
expectedMark
- 商标的预期价值
newMark
- 商标的新值
true
如果成功
public void set(V newReference, boolean newMark)
newReference
- 参考的新值
newMark
- 商标的新价值
public boolean attemptMark(V expectedReference, boolean newMark)
==
预期引用。
对此操作的任何给定的调用可能会失败(返回false
),但是当当前值保持预期值并且没有其他线程也尝试设置该值将最终成功时重复调用。
expectedReference
- 参考的预期值
newMark
- 商标的新价值
true
如果成功