Quelle est la signification de java volatile

http://southking.javaeye.com/blog/438318

        Nous savons que dans Java Action REGLER valeurs variables, en plus longue et deux de type externe de variables sont atomiques, que, pour les valeurs de variables lire simplement et les opérations d'écriture n'est pas nécessaire pour la synchronisation.         Cette machine virtuelle Java 1.2 avant, la Java mise en œuvre du modèle de mémoire toujours lire une variable de la mémoire principale, il ne nécessite aucune attention particulière. Avec la machine virtuelle Java matures et optimisé, maintenant dans un environnement multithread volatile mot - clé devient très important.         Dans le courant Java sous le modèle de mémoire, les variables peuvent être stockées dans la mémoire locale fil (tels que les registres de la machine), plutôt que directement dans la lecture et d' écriture mémoire principale. Cette modification peut entraîner un fil dans la mémoire principale de la valeur d'une variable, tandis que l'autre thread de continuer à utiliser sa copie de la valeur de la variable dans le registre, ce qui dans les données incohérentes.         Pour résoudre ce problème, comme dans ce programme, à la variable est déclarée comme volatile peut (instable), qui indique la machine virtuelle Java , cette variable est instable, chaque fois que vous utilisez tout est allé à la mémoire principale lire. En général, le signe partagé entre les tâches dans un environnement multi - tâches devrait être ajouté volatile modification.         volatil

 
 
variable membre modifié chaque fois qu'il est accessible fils sont contraints de re-lire la valeur de la variable d'élément de mémoire partagée. En outre, lorsque les membres des changements variables, fil force va changer la valeur écrite retour à la mémoire partagée. Alors que , à tout moment, deux fils différents voient toujours la même valeur d'une variable membre.          Java états de spécification de langage: comparer la valeur d' origine afin d'obtenir une vitesse optimale, ce qui permet les fils de copie privée Enregistrer la variable membre partagée, mais seulement si le fil lors de l' entrée ou à la sortie du bloc synchronisé avec la variable de membre partagé.        Ainsi , lorsque plusieurs threads en même temps à interagir avec un objet, il faut noter que le fil pour effectuer des modifications en temps opportun pour obtenir partagée variable membre.        Le volatile mot - clé est invité VM : Pour cette variable membre ne peut pas enregistrer sa copie privée, mais doit interagir directement avec la variable membre partagée.       Utilisation suggérée: Utilisation d'une variable membre deux ou plusieurs threads accèdent volatile . Lorsque la variable à accéder a été synchronisé pendant le bloc de code constant, ou n'est pas nécessaire d'utiliser.       En raison de l'utilisation de volatile COUPEZ VM dans l'optimisation de code nécessaire, il est relativement faible en matière d' efficacité, alors assurez - vous d'utiliser ce mot - clé seulement si nécessaire.
 
 
 
 

Publié 18 articles originaux · louange gagné 16 · vues 390 000 +

Je suppose que tu aimes

Origine blog.csdn.net/f_zongjian/article/details/5722354
conseillé
Classement