为什么Java中没有AtomicBooleanArray数据类型?
我注意到Java中有类似于AtomicIntegerArray的AtomicBooleanArray数据类型。虽然我可以使用AtomicBooleanArray[]来满足我当前的需求,但我很想了解为什么AtomicBooleanArray不是库的一部分 如果您对此有任何想法,我们将不胜感激为什么Java中没有AtomicBooleanArray数据类型?,java,java.util.concurrent,Java,Java.util.concurrent,我注意到Java中有类似于AtomicIntegerArray的AtomicBooleanArray数据类型。虽然我可以使用AtomicBooleanArray[]来满足我当前的需求,但我很想了解为什么AtomicBooleanArray不是库的一部分 如果您对此有任何想法,我们将不胜感激 谢谢我认为由于AtomicIntegerArray可以被看作是AtomicBooleanArray,如果您只指定0(false)和1(true)值。那么为什么要编写重复的代码呢?原子布尔实际上包装了一个int
谢谢我认为由于AtomicIntegerArray可以被看作是AtomicBooleanArray,如果您只指定0(false)和1(true)值。那么为什么要编写重复的代码呢?原子布尔实际上包装了一个
int
,它被设置为0或1表示false或true。这是因为它使用的是基于int
的compareAndSwap方法,而不是更小的方法
您可以实现一个AtmoicBooleanArray,但不能干净地实现,这可能就是它不存在的原因。i、 e.JVM不支持原子布尔运算,因为x64和ARM等CPU不支持原子布尔运算。有趣。但我的问题是,为什么java中有布尔值,因为你可以去掉int?因为布尔值是基本类型,几乎在每个java程序中都使用,所以它是为了代码可读性而添加的。此外,布尔变量由一位表示,而整数为32位。@JProgrammer
Boolean
可以比int
小4倍,位集可以比int[]
@Maxim小32倍,感谢您的响应。我知道这些数据类型的空间占用,但想深入挖掘。你可以试着问一下,我知道long和double不支持原子操作,但布尔对我来说是新的。谢谢你的指点。@JProgrammer长期支持原子操作,因此你可以很好地实现双原子。请参阅AtomicLong和AtomicLongArray。它是布尔型的,没有内在的支持(如byte、char和short)