synchronisiert vorzieht ich dieses answer am Ende gelesen haben, von denen die folgenden schriftlichen:flüchtige
alles, was Sie mit flüchtigen können mit synchronisiert, aber nicht umgekehrt erfolgen.
Es ist nicht klar. JLS 8.3.1.4 definiert flüchtige Felder wie folgt:
Ein Feld volatile deklariert werden kann, in welchem Fall der Java-Speichermodell stellt sicher, dass alle Threads einen konsistenten Wert für die Variable (§17.4) zu sehen.
So sind die flüchtigen Felder über Speicher Sichtbarkeit. Auch, soweit ich von der Antwort, die ich zitiert habe, gekommen bin, werden Lesen und Schreiben in flüchtige Felder synchronisiert.
Die Synchronisierung garantiert wiederum, dass der einzige Thread Zugriff auf einen synchronisierten Block hat. Wie ich habe, hat es nichts mit Speicher Sichtbarkeit zu tun. Was habe ich verpasst?
Das Eingeben und Verlassen eines 'synchronisierten' Blocks führt zu einer Speicherbarriere, die sicherstellt, dass Änderungen über Threads hinweg sichtbar sind. – Sneftel