为什么java.util.concurrent.atomic.AtomicBoolean在内部用int实现?

时间:2012-12-05 13:57:13

标签: java multithreading concurrency atomic java.util.concurrent

AtomicBoolean将其值存储在:

private volatile int value;

然后,例如,提取它的值就像这样:

    public final boolean get() {
    return value != 0;
}

背后的原因是什么?为什么没有使用boolean

2 个答案:

答案 0 :(得分:6)

AFAIK,int是可在不同机器类型中实施的最小类型CAS操作。

注意:由于对象分配是8字节对齐的,因此使用较小的类型不会保存任何内存。

答案 1 :(得分:0)

这可能是为了能够在同一个基础(Atomic)上建立几个Unsafe类,它们使用整数并提供比较和交换操作。

Concurrency in Practice对内部运作提供了很好的解释。