AtomicBoolean将其值存储在:
private volatile int value;
然后,例如,提取它的值就像这样:
public final boolean get() {
return value != 0;
}
背后的原因是什么?为什么没有使用boolean
?
答案 0 :(得分:6)
AFAIK,int
是可在不同机器类型中实施的最小类型CAS操作。
注意:由于对象分配是8字节对齐的,因此使用较小的类型不会保存任何内存。
答案 1 :(得分:0)
这可能是为了能够在同一个基础(Atomic
)上建立几个Unsafe
类,它们使用整数并提供比较和交换操作。
Concurrency in Practice对内部运作提供了很好的解释。