Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java中没有AtomicBooleanArray数据类型?_Java_Java.util.concurrent - Fatal编程技术网

为什么Java中没有AtomicBooleanArray数据类型?

为什么Java中没有AtomicBooleanArray数据类型?,java,java.util.concurrent,Java,Java.util.concurrent,我注意到Java中有类似于AtomicIntegerArray的AtomicBooleanArray数据类型。虽然我可以使用AtomicBooleanArray[]来满足我当前的需求,但我很想了解为什么AtomicBooleanArray不是库的一部分 如果您对此有任何想法,我们将不胜感激 谢谢我认为由于AtomicIntegerArray可以被看作是AtomicBooleanArray,如果您只指定0(false)和1(true)值。那么为什么要编写重复的代码呢?原子布尔实际上包装了一个int

我注意到Java中有类似于AtomicIntegerArray的AtomicBooleanArray数据类型。虽然我可以使用AtomicBooleanArray[]来满足我当前的需求,但我很想了解为什么AtomicBooleanArray不是库的一部分

如果您对此有任何想法,我们将不胜感激


谢谢

我认为由于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)