Maison >Java >JavaQuestions d'entretien >Entretien avec un ingénieur Java - mot clé volatile
1. Que fait volatile ?
(volatile garantit l'ordre et la visibilité, mais ne peut pas garantir l'atomicité)
(Tutoriel vidéo recommandé :Tutoriel vidéo Java)
1. Le réarrangement des instructions est interdit
2 La visibilité des différents threads opérant sur cette variable est garantie, c'est-à-dire une modification de thread si une certaine variable. est définie, la nouvelle valeur est immédiatement visible par les autres threads
3 L'atomicité n'est pas garantie (thread dangereux)
2. Comparaison du mot-clé synchronisé et du mot-clé volatile
. Le mot clé volatile est une implémentation légère de la synchronisation des threads, donc les performances volatiles sont nettement meilleures que celles du mot clé synchronisé. Cependant, le mot clé volatile ne peut être utilisé que pour les variables et le mot clé synchronisé peut modifier les méthodes et les blocs de code.
(Recommandations pour des questions d'entretien plus connexes : questions et réponses d'entretien Java)
Le mot-clé synchronisé a été introduit après JavaSE1.6, principalement pour réduire l'acquisition de verrous et versions L'efficacité d'exécution a été considérablement améliorée après l'introduction de verrous biaisés, de verrous légers et de diverses autres optimisations en raison de la consommation de performances causée par les verrous. Dans le développement actuel, il existe encore plus de scénarios dans lesquels le mot-clé synchronisé est utilisé.
L'accès multithread au mot-clé volatile ne bloquera pas, mais le mot-clé synchronisé peut bloquer
Le mot-clé volatile peut garantir la visibilité des données, mais il ne peut pas garantir l'atomicité des données. . Le mot-clé synchronisé peut garantir les deux (synchronized garantit trois propriétés majeures, l'atomicité, l'ordre et la visibilité).
Le mot-clé volatile est principalement utilisé pour résoudre la visibilité des variables entre plusieurs threads, tandis que le mot-clé synchronisé résout la synchronisation de l'accès aux ressources entre plusieurs threads.
Recommandations associées : Démarrez avec Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!