我注意到在Java中有AtomicBooleanArray類型的AtomicBooleanArray數據類型與AtomicIntegerArray差不多。雖然我可以使用AtomicBoolean []來滿足當前的需求,但我很好奇爲了理解爲什麼AtomicBooleanArray不是庫的一部分。爲什麼Java中沒有AtomicBooleanArray數據類型?
任何想法在此將不勝感激。
感謝
我注意到在Java中有AtomicBooleanArray類型的AtomicBooleanArray數據類型與AtomicIntegerArray差不多。雖然我可以使用AtomicBoolean []來滿足當前的需求,但我很好奇爲了理解爲什麼AtomicBooleanArray不是庫的一部分。爲什麼Java中沒有AtomicBooleanArray數據類型?
任何想法在此將不勝感激。
感謝
我認爲既然AtomicIntegerArray可以看到的AtomicBooleanArray,如果你只分配0(假)和1(真)值。那麼爲什麼要編寫重複的代碼?
詢問有趣。但是,那麼我的問題將是爲什麼在java中有布爾值,因爲你可以不用int? – JProgrammer
由於布爾是幾乎在每個Java程序中都使用的基本類型,因此它被添加用於代碼可讀性。另外布爾變量由一位表示,而整數爲32位。 –
@JProgrammer'boolean'可以比'int'小4倍,BitSet可以比'int []' –
AtomicBoolean實際上包裝了一個int
,對於false或true,它被設置爲0或1。這是因爲它使用基於int
的compareAndSwap方法,而不是更小。
你可以實現一個AtmoicBooleanArray,但不是乾淨的,這可能是爲什麼它不在那裏。即JVM不支持原子布爾操作,因爲像x64和ARM這樣的CPU不支持它。
我知道long和double不支持原子操作,但boolean對我來說是新的。感謝指針。 – JProgrammer
@JProgrammer長時間支持原子操作,因此你可以實現雙原子操作。請參閱AtomicLong和AtomicLongArray。它是沒有固有支持的布爾(如字節,字符和短) –
您可以嘗試在[JSR166併發郵件列表](http://jsr166-concurrency.10961.n7.nabble.com/) –