Quel est le modificateur volatile pour les variables Java?

Vue d'ensemble des modificateurs volatils

--C'est un modificateur donné aux variables. Dans certains cas, il peut être utilisé au lieu de synchronisé.

private static volatile int count = 0; 

Rôle 1: interdire la lecture à partir de la valeur du cache

Rôle 2: exclure de l'optimisation au moment de la compilation

#Code comme ci-dessous...
boolean flg = true;
while(flg){
    System.out.println("hello!");
}

#Optimisé comme suit...→ La boucle ne se termine pas en supposant que flg est changé en false dans un autre thread!
if(flg){
  while(true){
       System.out.println("hello!");
  }
}

En quoi est-ce différent de synchronisé?

--Synchronized est plus sophistiqué (volatile est une version simplifiée de synchronized) --volatile a le rôle ci-dessus, mais il n'est pas thread-safe. --volatile a le rôle de synchroniser les variables entre le thread et la mémoire principale (= lire la valeur de la mémoire principale sans mise en cache), mais synchronized a également le rôle d'effectuer un contrôle exclusif. -C'est une erreur de dire que ** volatile ** peut être utilisé pour le contrôle exclusif.

Les références

[Difference Between Volatile and Synchronized Keywords in Java] https://dzone.com/articles/difference-between-volatile-and-synchronized-keywo

Recommended Posts

Quel est le modificateur volatile pour les variables Java?
A quoi sert le constructeur?
Qu'est-ce que 'java
Qu'est-ce que Java <>?
Qu'est-ce que 'java
Quelle est la meilleure lecture de fichier (Java)
Quelle est la méthode principale en Java?
À quoi sert le modèle de façade?
Qu'est-ce que le modèle Java Servlet / JSP MVC?
Qu'est-ce que l'encapsulation Java?
Qu'est-ce que la technologie Java?
Qu'est-ce que Java API-java
[Java] Qu'est-ce que flatMap?
[Java] Qu'est-ce que ArrayList?
Ce dont les ingénieurs Java ont besoin pour se préparer à la version Java 11
Qu'est-ce que l'assertion Java? Résumé.
Quelle est la méthode pluck?
Qu'est-ce que la classe BufferedReader?
Qu'est-ce qu'une collection Java?
[Ruby] À quoi sert «!!»?
[Java] Qu'est-ce que jaee j2ee?
[Java] Qu'est-ce que l'héritage de classe?
[Notions de base Java] Qu'est-ce que la classe?
Qu'est-ce que l'analyse Java Escape?
5ème jour de Java
Quelle est la méthode d'initialisation?
Qu'est-ce que la classe LocalDateTime? [Java débutant] -Date et classe d'heure-
Qu'est-ce que JVM (Java Virtual Machine)?
'% 02d' Quel est le% de% 2?
Où est le fuseau horaire de Java LocalDateTime.now ()?
Qu'est-ce que Thread Safe (avec Java)
[Java] Qu'est-ce que l'exception de modification simultanée?
Qu'est-ce qu'une expression lambda (Java)
La procédure de candidature à l'examen de qualification Java Bronze est trop compliquée.
[Java] Quelle est la différence entre form, entity et dto? [Haricot]
Qu'est-ce qu'une classe en langage Java (3 /?)
Quel est le meilleur type de données de migration? ??
Introduction à Java pour la première fois # 2
Qu'est-ce qu'un test? ・ À propos de l'importance d'un test
[Pour les débutants en programmation] Qu'est-ce qu'une méthode?
À propos de la procédure pour que Java fonctionne
Guide de style de programmation Java pour l'ère Java 11
Qu'est-ce qu'une classe en langage Java (1 /?)
[Pour les super super débutants] Qu'est-ce que l'orientation objet?
Qu'est-ce que Java et l'environnement de développement (MAC)
[Java] De nos jours, l'instruction for étendue n'est pas exclusivement pour List, n'est-ce pas?
Quel est le test de code de test de modèle
Quelles sont les fonctionnalités mises à jour de Java 13
Quelle est la structure des données d'ActionText?
L'API de sécurité Java EE est là!
Apprendre pour la première fois java [Introduction]
[Java] Les variables déclarées à l'intérieur de l'instruction `for` ne peuvent pas être utilisées en dehors du bloc` instruction for`
Qu'est-ce que CHECKSTYLE: OFF trouvé dans la source Java? Checkstyle à savoir de
Java vs JavaScript: quelle est la différence?
Que trouve-t-on ... (3 points) dans la source Java? Argument de longueur variable à connaître
Qu'est-ce que JSP? ~ Connaissons les bases de JSP !! ~