共计 852 个字符,预计需要花费 3 分钟才能阅读完成。
接着前两篇的 AtomicBoolean 和 AtomicInteger 再来看看 AtomicReference 类上的注释说明:
An object refenrence that may be updated atomically. 用来原子更新对象的引用。
一、AtomicRefenrence 属性
private static final Unsafe unsafe = Unsafe.getUnsafe();
private static final long valueOffset;
private volatile V value;
static{
try{
valueOffset = unsafe.objectFieldOffset
(AtomicReference.class.getDeclaredField("value"));
}catch(Exception e){throw new Error(ex);
}
}
二、构造器
/**
*Creates a new AtomicReference with the given initial value
*/
public AtomicReference(V initialValue){value = initialValue;}
/**
* Creates a new AtomicReference with null initail value
*/
public AtomicReference(){}
除了上面的属性、构造器外,AtomicReference 与 AtomicBoolean、
AtomicInteger 在方法上都差不多,这里只提一个方法:
/**
*Atomically sets to the given value and returns the old value.
*/
public final V getAndSet(V newValue){return(V)unsafe.getAndSetObject(this,valueOffset,newValue);
}
这个方法同 AtomicInteger 一样是在 Unsafe 类里进行自旋,与 AtomicBoolean 略有不同。
正文完