2013-10-15 58 views
5

我注意到在Java中有AtomicBooleanArray類型的AtomicBooleanArray數據類型與AtomicIntegerArray差不多。雖然我可以使用AtomicBoolean []來滿足當前的需求,但我很好奇爲了理解爲什麼AtomicBooleanArray不是庫的一部分。爲什麼Java中沒有AtomicBooleanArray數據類型?

任何想法在此將不勝感激。

感謝

+0

您可以嘗試在[JSR166併發郵件列表](http://jsr166-concurrency.10961.n7.nabble.com/) –

回答

0

我認爲既然AtomicIntegerArray可以看到的AtomicBooleanArray,如果你只分配0(假)和1(真)值。那麼爲什麼要編寫重複的代碼?

+1

詢問有趣。但是,那麼我的問題將是爲什麼在java中有布爾值,因爲你可以不用int? – JProgrammer

+0

由於布爾是幾乎在每個Java程序中都使用的基本類型,因此它被添加用於代碼可讀性。另外布爾變量由一位表示,而整數爲32位。 –

+0

@JProgrammer'boolean'可以比'int'小4倍,BitSet可以比'int []' –

3

AtomicBoolean實際上包裝了一個int,對於false或true,它被設置爲0或1。這是因爲它使用基於int的compareAndSwap方法,而不是更小。

你可以實現一個AtmoicBooleanArray,但不是乾淨的,這可能是爲什麼它不在那裏。即JVM不支持原子布爾操作,因爲像x64和ARM這樣的CPU不支持它。

+0

我知道long和double不支持原子操作,但boolean對我來說是新的。感謝指針。 – JProgrammer

+0

@JProgrammer長時間支持原子操作,因此你可以實現雙原子操作。請參閱AtomicLong和AtomicLongArray。它是沒有固有支持的布爾(如字節,字符和短) –