Java 的对象原子性

2018-08-03  本文已影响5人  yunhen

AtomicReference、AtomicStampedReference、AtomicMarkableReference

这三个都是自JDK1.5开始加入到java.util.concurrent.atomic下面的。他们都可以在lock-free的情况下以原子的方式更新对象引用。

区别在于:AtomicStampedReference内部维护了一个[reference, integer] pairs的二元组。AtomicMarkableReference 内部维护了一个[reference, boolean] pairs的二元组。

AtomicStampedReference中的stamp用来保证是否被重复修改

主要方法

//比较设置 参数依次为:期望值 写入新值 期望时间戳 新时间戳
public boolean compareAndSet(V expectedReference,V  
newReference,int expectedStamp,int newStamp)
//获得当前对象引用
public V getReference()
//获得当前时间戳
public int getStamp()
//设置当前对象引用和时间戳,这个方法不是原子性的
public void set(V newReference, int newStamp)

上一篇下一篇

猜你喜欢

热点阅读