133 votes

Que sont les modificateurs transitoires et volatiles?

Quelqu'un peut-il expliquer ce que signifient les modificateurs transient et volatile en Java?

164voto

Stephen C Points 255558

L' volatile et transient modificateurs s'appliquent à des champs de classes.

L' transient modificateur raconte l'Java sérialisation d'un objet sous-système d'exclure du champ lors de la sérialisation d'une instance de la classe. Lorsque l'objet est ensuite désérialisé, le champ est initialisé à la valeur par défaut; c'est à dire null d'un type de référence, et zéro ou false pour un type primitif. Notez que le JLS (voir 8.3.1.3) ne dit pas ce qu' transient moyen, mais renvoie à la Java Sérialisation d'un Objet de la Spécification. D'autres non-standard de sérialisation mécanismes peuvent également prêter attention à un champ transient-ness.

L' volatile modificateur raconte la JVM qui écrit dans le champ doit toujours être en mode synchrone vidés de la mémoire, et qui lit du champ doit toujours lire à partir de la mémoire. Cela signifie que les champs marqués, alors que la volatilité accessible en toute sécurité et mis à jour dans multi-thread de l'application sans l'aide de maternelle ou de la bibliothèque standard à base de synchronisation. De même, les lectures et les écritures à la volatilité des champs sont atomiques. (Ceci ne s'applique pas aux non-volatile long ou double champs, qui peuvent être soumis à "mot de déchirure" sur certaines machines virtuelles.) Les parties pertinentes de la JLS sont 8.3.1.4, 17.4 et de 17,7.

7voto

Raynos Points 82706

Volatilité des moyens autres threads peuvent modifier cette variable. Ainsi, le compilateur permet d'avoir accès à eux.

http://www.javamex.com/tutorials/synchronization_volatile.shtml

Transitoire signifie que lorsque vous sérialiser un objet, il sera de retour à sa valeur par défaut sur la dé-sérialisation

http://www.geekinterview.com/question_details/2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X