2013-10-15 14 views
5

Ho notato che c'è NO datatype AtomicBooleanArray in Java simile all'AtomicIntegerArray. Sebbene io possa utilizzare AtomicBoolean [] per le mie esigenze attuali, ero curioso di capire perché AtomicBooleanArray NON fa parte della libreria.Perché non esiste un tipo di dati AtomicBooleanArray in Java?

Qualsiasi idea in questo sarebbe molto apprezzata.

Grazie

+0

Puoi provare a chiedere alla [JSR166 mailing list Concurrency] (http://jsr166-concurrency.10961.n7.nabble.com/) –

risposta

0

Penso che da quando AtomicIntegerArray può essere vedere come AtomicBooleanArray, se si vuole assegnare solo 0 (falso) e 1 valori (vero). Quindi, perché scrivere codice duplicato?

+1

Interessante. Ma poi la mia domanda sarebbe perché avere booleano in java, come si potrebbe fare a meno di solo int? – JProgrammer

+0

Poiché Boolean è un tipo primitivo utilizzato in quasi tutti i programmi Java, è stato quindi aggiunto per la leggibilità del codice. Inoltre, la variabile booleana presentata da un bit mentre l'intero è lunga 32 bit. –

+0

@JProgrammer 'boolean' può essere 4x più piccolo di' int' BitSet può essere 32x più piccolo di un 'int []' –

3

AtomicBoolean in realtà include uno int impostato su 0 o 1 per falso o vero. Questo perché utilizza i metodi compareAndSwap che sono basati su int e non più piccoli.

Si potrebbe implementare un AtmoicBooleanArray, ma non in modo pulito, che è forse il motivo per cui non è lì. cioè la JVM non supporta le operazioni booleane atomiche perché le CPU come x64 e ARM non la supportano.

+0

Ero consapevole del lungo e del doppio che non supportava le operazioni atomiche, ma il booleano è nuovo per me. Grazie per i suggerimenti. – JProgrammer

+0

@JProgrammer operazioni di supporto lunghe atomiche e quindi è possibile implementare il doppio atomicamente era bene. Vedi AtomicLong e AtomicLongArray. È booleano che non ha alcun supporto intrinseco (come byte, char e short) –

Problemi correlati