


Comprendre la cohérence avant qu'elle se produise
Dans le chapitre 17 de la spécification du langage Java (JLS), la « cohérence qui se produit avant » est définie comme suit :
"Un ensemble d'actions A est cohérent avant tout si pour toutes les lectures r dans A, où W(r) est l'action d'écriture vue par r, il n'est pas vrai que hb(r , W(r)) ou qu'il existe une écriture w dans A telle que w.v = r.v et hb(W(r), w) et hb(w, r)."
Cette définition peut être simplifiée comme : pour qu'un ensemble d'actions soit cohérent avant, aucune lecture ne doit voir une écriture qui se produit plus tard, et aucune écriture ne doit être suivie d'une lecture qui voit une valeur antérieure.
Vos questions
-
Vos deux premières questions :
- Oui, votre compréhension de la définition est correcte.
- "w.v = r.v" signifie que la valeur écrite par l'action d'écriture w est la même que la valeur lue par l'action de lecture r.
-
Votre troisième question :
Les chiffres à gauche des actions dans les ordres d'exécution représentent l'ordre séquentiel dans lequel les actions ont été exécutées.
-
Votre quatrième question :
Oui, votre compréhension selon laquelle r2 et r1 ont tous deux vu l'écriture initiale de 0 car A et B ne sont pas des champs volatils est correcte. Les champs non volatils peuvent être stockés dans des registres, ce qui peut entraîner des incohérences temporaires.
-
Vos cinquième et sixième questions :
La situation décrite dans le deuxième ordre d'exécution, où les lectures voient les écritures qui se produisent plus tard, peuvent se produire dans des scénarios multithread réels. Un exemple pourrait être :
- Le thread A écrit dans une variable partagée X.
- Le thread B lit la valeur de X plus tard, mais en raison des retards de cohérence du cache, il voit l'ancienne valeur.
Pour éviter de telles incohérences, des champs volatiles peuvent être utilisés pour garantir que les lectures et les écritures sont effectuées de manière cohérente.
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!

L'article discute de l'utilisation de Maven et Gradle pour la gestion de projet Java, la construction de l'automatisation et la résolution de dépendance, en comparant leurs approches et leurs stratégies d'optimisation.

L'article discute de la création et de l'utilisation de bibliothèques Java personnalisées (fichiers JAR) avec un versioning approprié et une gestion des dépendances, à l'aide d'outils comme Maven et Gradle.

L'article examine la mise en œuvre de la mise en cache à plusieurs niveaux en Java à l'aide de la caféine et du cache de goyave pour améliorer les performances de l'application. Il couvre les avantages de configuration, d'intégration et de performance, ainsi que la gestion de la politique de configuration et d'expulsion le meilleur PRA

L'article discute de l'utilisation de JPA pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux. Il couvre la configuration, la cartographie des entités et les meilleures pratiques pour optimiser les performances tout en mettant en évidence les pièges potentiels. [159 caractères]

Le chargement de classe de Java implique le chargement, la liaison et l'initialisation des classes à l'aide d'un système hiérarchique avec Bootstrap, Extension et Application Classloaders. Le modèle de délégation parent garantit que les classes de base sont chargées en premier, affectant la classe de classe personnalisée LOA


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Dreamweaver CS6
Outils de développement Web visuel

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),