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

AtomicBoolean 将其值存储在:

private volatile int value;

然后,例如,提取其值是按如下方式完成的:

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

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


答案 1

AFAIK是可以跨不同机器类型实现的最小类型的CAS操作。int

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


答案 2

这可能是为了能够将多个类基于同一个基数 (),该基数使用整数并提供比较和交换操作。AtomicUnsafe

实践中的并发性为内部工作原理提供了很好的解释。


推荐