V
- 此引用引用的对象的类型
public class AtomicStampedReference<V> extends Object
AtomicStampedReference
维护对象引用以及整数“印记”,可以原子更新。
实现注意事项:此实现通过创建表示“boxed”[引用,整数]对的内部对象来维护加盖引用。
Constructor and Description |
---|
AtomicStampedReference(V initialRef, int initialStamp)
创建一个新的
AtomicStampedReference 与给定的初始值。
|
Modifier and Type | Method and Description |
---|---|
boolean |
attemptStamp(V expectedReference, int newStamp)
如果当前参考是预期参考的==,则
== 地将该值的值设置为给定的更新值。
|
boolean |
compareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)
以原子方式设置该引用和邮票给定的更新值的值,如果当前的参考是
== 至预期的参考,并且当前标志等于预期标志。
|
V |
get(int[] stampHolder)
返回引用和戳记的当前值。
|
V |
getReference()
返回引用的当前值。
|
int |
getStamp()
返回邮票的当前值。
|
void |
set(V newReference, int newStamp)
无条件地设置引用和戳记的值。
|
boolean |
weakCompareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)
以原子方式设置该引用和邮票给定的更新值的值,如果当前的参考是
== 至预期的参考,并且当前标志等于预期标志。
|
public AtomicStampedReference(V initialRef, int initialStamp)
AtomicStampedReference
。
initialRef
- 初始参考
initialStamp
- 初始邮票
public V getReference()
public int getStamp()
public V get(int[] stampHolder)
int[1] holder; ref = v.get(holder);
。
stampHolder
- 至少有一个大小的数组。
返回时, stampholder[0]
将保留该邮票的价值。
public boolean weakCompareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)
==
至预期的参考,并且当前标志等于预期标志。
May fail spuriously and does not provide ordering guarantees ,所以只是很少适合替代compareAndSet
。
expectedReference
- 参考的预期值
newReference
- 参考的新值
expectedStamp
- 邮票的预期值
newStamp
- 邮票的新值
true
如果成功
public boolean compareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)
==
至预期的参考,并且当前标志等于预期标志。
expectedReference
- 参考的预期值
newReference
- 参考的新值
expectedStamp
- 邮票的预期值
newStamp
- 邮票的新价值
true
如果成功
public void set(V newReference, int newStamp)
newReference
- 参考的新值
newStamp
- 邮票的新值
public boolean attemptStamp(V expectedReference, int newStamp)
==
,则将该戳的值原子设置为给定的更新值。
任何给定的调用此操作可能会失败(返回false
),但是当当前值保留预期值并且没有其他线程也尝试设置该值将最终成功时重复调用。
expectedReference
- 参考的预期值
newStamp
- 邮票的新价值
true
如果成功