2013-10-15 37 views
5

Tôi đã nhận thấy rằng có SỐ Kiểu dữ liệu AtomicBooleanArray trong Java tương tự như AtomicIntegerArray. Mặc dù tôi có thể sử dụng AtomicBoolean [] cho các nhu cầu hiện tại của mình, nhưng tôi tò mò muốn hiểu tại sao AtomicBooleanArray KHÔNG phải là một phần của thư viện.Tại sao không có kiểu dữ liệu AtomicBooleanArray trong Java?

Bất kỳ suy nghĩ nào về điều này sẽ được đánh giá cao.

Cảm ơn

+0

Bạn có thể thử hỏi tại [JSR166 danh sách gửi thư đồng thời] (http://jsr166-concurrency.10961.n7.nabble.com/) –

Trả lời

0

Tôi nghĩ rằng kể từ khi AtomicIntegerArray có thể được nhìn thấy như AtomicBooleanArray, nếu bạn sẽ chỉ định chỉ 0 (false) và 1 giá trị (true). Vậy tại sao phải viết mã trùng lặp?

+1

Thú vị. Nhưng sau đó câu hỏi của tôi sẽ là lý do tại sao có boolean trong java, như bạn có thể làm đi với chỉ int? – JProgrammer

+0

Vì Boolean là kiểu nguyên thủy được sử dụng trong hầu hết mọi chương trình java nên nó đã được thêm vào để dễ đọc mã. Ngoài ra biến Boolean được trình bày bởi một bit trong khi số nguyên dài 32 bit. –

+0

@JProgrammer 'boolean' có thể nhỏ hơn 4x so với' int' BitSet có thể nhỏ hơn 32x so với 'int []' –

3

AtomicBoolean thực sự bao bọc int được đặt thành 0 hoặc 1 cho sai hoặc đúng. Điều này là bởi vì nó sử dụng các phương thức compareAndSwap có kích thước là int và không nhỏ hơn.

Bạn có thể triển khai một AtmoicBooleanArray, nhưng không rõ ràng, có lẽ là lý do tại sao nó không có ở đó. tức là JVM không hỗ trợ các hoạt động boolean nguyên tử vì các CPU như x64 và ARM don 'hỗ trợ nó.

+0

Tôi đã nhận thức được lâu và đôi không hỗ trợ hoạt động nguyên tử, nhưng boolean là mới đối với tôi. Cảm ơn các con trỏ. – JProgrammer

+0

@JProgrammer hỗ trợ lâu dài hoạt động nguyên tử và do đó bạn có thể thực hiện gấp đôi nguyên tử là tốt. Xem AtomicLong và AtomicLongArray. Nó là boolean không có hỗ trợ nội tại (như byte, char và short) –

Các vấn đề liên quan