Gibt es frühere Beziehungen zu flüchtigen Feldern und synchronisierten Blöcken in Java - und deren Auswirkungen auf nichtflüchtige Variablen?

Das Thema Threading ist mir noch ziemlich neu und ich versuche, mehr darüber zu verstehen. Kürzlich bin ich auf einen Blogeintrag gestoßenWas Volatile in Java bedeutet von Jeremy Manson, wo er schreibt:

Wenn ein Thread in eine flüchtige Variable schreibt und ein anderer Thread diesen Schreibvorgang sieht, sagt der erste Thread dem zweiten etwas darüberalles vom Inhalt des Speichers bis zum Schreiben in diese flüchtige Variable. [...]alles des Speicherinhalts von Thread 1, bevor er geschrieben hat[volatile] readymuss für Thread 2 sichtbar sein, nachdem der Wert gelesen wurdetrue zumready. [Hervorhebung von mir hinzugefügt]

Bedeutet das nun, dass alle Variablen (flüchtig oder nicht), die sich zum Zeitpunkt des Schreibens in die flüchtige Variable im Speicher von Thread 1 befinden, für Thread 2 sichtbar werden, nachdem diese flüchtige Variable gelesen wurde? Wenn ja,Ist es möglich, diese Aussage aus der offiziellen Java-Dokumentation / den Oracle-Quellen zusammen zu rätseln? Und ab welcher Java-Version funktioniert das?

Insbesondere, wenn alle Threads die folgenden Klassenvariablen gemeinsam haben:

private String s = "running";
private volatile boolean b = false;

Und Thread 1 führt zuerst Folgendes aus:

s = "done";
b = true;

Und Thread 2 wird anschließend ausgeführt (nachdem Thread 1 in das flüchtige Feld geschrieben hat):

boolean flag = b; //read from volatile
System.out.println(s);

Würde dies garantiert "erledigt" ausgeben?

Was würde passieren, wenn nicht deklarierenb wievolatile Ich habe das Schreiben und Lesen in einsynchronized Block?

Darüber hinaus in einer Diskussion mit dem Titel "Werden statische Variablen zwischen Threads geteilt?", @BAUMschreibt:

Verwenden Sie Volatile nicht, um mehr als einen gemeinsamen Status zu schützen.

Warum? (Entschuldigung, ich kann noch keine Kommentare zu anderen Fragen abgeben, sonst hätte ich sie gestellt ...)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage