J'ai regardé les autres volatiles vs Atomicxxxx questions (y compris cette une) et avoir lu la description de java.util.actuel.atomique, et je ne suis pas tout à fait satisfait avec les nuances.
Si je suis en train de décider entre l'utilisation d' volatile boolean
et AtomicBoolean
, il y a des différences concrètes en plus de la atomique en lecture-modification-écriture opérations offertes par AtomicBoolean? (par exemple, compareAndSet()
et getAndSet()
)
Supposons que j'ai
volatile boolean flag;
Ensuite, un ou plusieurs threads définir l'indicateur (mais pas supprimer). Si j'ai un thread qui lit le drapeau, et si, une action, puis efface le drapeau, est - volatile
- il adéquat?
Est-il un coût plus élevé pour AtomicBoolean que volatile de type boolean, en termes de
- l'espace mémoire
- performances (
volatile boolean
semble exiger la mémoire de l'escrime,AtomicBoolean
semble exiger la mémoire de l'escrime + quelques petites verrouillage sur le CAS des opérations conformément à la java.util.actuel.description atomique)
Mon intuition est un appel à aller juste avec AtomicBoolean et être en sécurité, mais je veux comprendre si il y a une situation d'utiliser des volatile boolean
à la place (par exemple, si j'ai eu des milliers de cas d'eux et les performances ont été un problème).