volatile
a la sémantique pour la mémoire de la visibilité. Fondamentalement, la valeur de l' volatile
champ devient visible pour tous les lecteurs (les autres threads en particulier) après une opération d'écriture est terminée. Sans volatile
, les lecteurs pourraient voir certains non-mise à jour de la valeur.
Pour répondre à votre question: Oui, j'utilise un volatile
variable pour contrôler si certains le code continue à une boucle. La boucle de tests de l' volatile
de la valeur et continue, si c'est true
. La condition peut être réglé false
en appelant à un "stop" de la méthode. La boucle voit false
et se termine lors du test de la valeur après l'arrêt de la méthode de l'exécution terminée.
Le livre "Java Simultanéité dans la Pratique," que je recommande fortement, donne une bonne explication de l' volatile
. Ce livre est écrit par la même personne qui a écrit le IBM article est référencé dans la question (en fait, il cite son livre en bas de cet article). Mon utilisation de l' volatile
est ce que son article appelle le "modèle 1 indicateur d'état."
Si vous voulez en savoir plus sur la façon dont volatile
fonctionne sous le capot, lire sur le modèle mémoire Java. Si vous voulez aller au-delà de ce niveau, découvrez une bonne architecture d'un ordinateur livre comme Hennessy Et Patterson et lire sur la cohérence de cache et le cache de la cohérence.