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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

AtomicBoolean将其值存储在:

private volatile int value;

然后,例如,提取其值就像这样完成:

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

它背后的原因是什么?为什么boolean不使用?

提问于
用户回答回答于

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

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

用户回答回答于

这可能是Atomic基于同一个base(Unsafe)中的几个类,它使用整数并提供比较和交换操作。

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

扫码关注云+社区