Heim Java javaLernprogramm Ausführliche Einführung zu „Haves-Before'.

Ausführliche Einführung zu „Haves-Before'.

Jun 14, 2017 am 09:46 AM

Um die Leistung zu verbessern, ordnen Prozessoren und Compiler die Anweisungen häufig neu an, sie können jedoch nicht nach Belieben neu angeordnet werden. Es müssen die folgenden zwei Bedingungen erfüllt sein. Die Ergebnisse der Programmausführung können in einer Single-Thread-Umgebung nicht geändert werden. Wenn Datenabhängigkeiten bestehen, ist eine Neuordnung nicht zulässig. Wenn Sie den vorherigen Blog von LZ gelesen haben, wissen Sie, dass diese beiden Punkte tatsächlich einem zugeordnet werden können Punkt: Das Passiert-Vorher-Prinzip kann nicht weitergegeben werden. Darüber hinaus erlaubt JMM eine beliebige Reihenfolge. Als-ob-serielle Semantik bedeutet, dass alle Vorgänge zur Optimierung neu angeordnet werden können. Sie müssen jedoch sicherstellen, dass die Ausführungsergebnisse nach der Neuordnung nicht geändert werden können. Der Compiler, die Laufzeit und der Prozessor müssen alle dem Als-ob- entsprechen. serielle Semantik. Beachten Sie, dass „as-if-serial“ nur eine Single-Thread-Umgebung garantiert und in einer Multi-Thread-Umgebung ungültig ist. Lassen Sie uns ein einfaches Beispiel zur Veranschaulichung verwenden: int a = 1;

[Tote Java-Parallelität]-----Neuordnung des Java-Speichermodells

Ausführliche Einführung zu „Haves-Before'.

Einführung: Um die Leistung zu verbessern, ordnen Prozessoren und Compiler häufig Anweisungen neu an. Sie können die Reihenfolge jedoch nicht nach Belieben ändern Sie können es nicht beliebig sortieren. Es muss die folgenden zwei Bedingungen erfüllen: 1. Das Ergebnis der Programmausführung kann in einer Single-Thread-Umgebung nicht geändert werden. Wenn Sie sich den letzten Blog von LZ ansehen, werden Sie wissen, dass diese beiden Punkte tatsächlich auf eines zurückzuführen sind: Sie können nicht durch das „Passiert-vorher“-Prinzip abgeleitet werden, und JMM erlaubt eine beliebige Reihenfolge. as-if-serial semantics as-if-se

2 🎜>

Einführung: Im letzten Blog ([Deadly Java Concurrency] – Eingehende Analyse des Implementierungsprinzips von Volatile) erwähnte LZ es Es wurde festgestellt, dass es aufgrund des Vorhandenseins von lokalem Thread-Speicher und Hauptspeicher in Verbindung mit der Neuordnung zu Sichtbarkeitsproblemen in Multithread-Umgebungen kommt. Wenn wir also Synchronisation und Sperren richtig verwenden, wann ändert Thread A die Variable a, die für Thread B sichtbar ist? Wir können nicht in allen Szenarien festlegen, wann von einem Thread geänderte Variablen für andere Threads sichtbar sind. Diese Regel gilt ab JDK 5. JMM verwendet haAusführliche Einführung zu „Haves-Before'.

3. Praxis des nicht blockierenden Synchronisationsalgorithmus (3) - LatestResultsProvider

Einführung: Vielen Dank an trytocatch für die Übermittlung dieses Artikels. Vorwort Bevor Sie diesen Artikel lesen, müssen sich die Leser mit „Happen vor“ vertraut machen und einige grundlegende Konzepte der nicht blockierenden Synchronisierung verstehen. Der Schwerpunkt dieses Artikels liegt auf der flexiblen Anwendung der „Passiert-vorher“-Regel, einigen Tipps zur Problemlösung und Möglichkeiten zur Problemanalyse. Hintergrundeinführung Die ursprüngliche Anforderung lautet: Ich habe ein reguläres Ersatztool geschrieben Ausführliche Einführung zu „Haves-Before'.

[Verwandte Fragen und Antworten]:

passiert vom Java-Speichermodell- vor Ausgabe der semantischen Reihenfolge

Das obige ist der detaillierte Inhalt vonAusführliche Einführung zu „Haves-Before'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Mar 17, 2025 pm 05:44 PM

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Mar 17, 2025 pm 05:43 PM

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Mar 17, 2025 pm 05:46 PM

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement? Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement? Mar 17, 2025 pm 05:45 PM

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

See all articles