Ich frage mich, ob das Schreiben in eine flüchtige Variable jvm zwingt, alle nichtflüchtigen Variablen mit dem Speicher zu synchronisieren, also zum Beispiel, was im folgenden Code passieren wird:
%Vor%x wird in die Erinnerung geschrieben, aber was wird mit dir passieren? Wird es auch in Erinnerung geschrieben werden?
Ja, gemäß den Regeln der Java-Sprachspezifikation (dritte Ausgabe) ) - insbesondere Abschnitt 17.4.4 - jeder Thread, der den neuen Wert von x
sieht, wird später auch den neuen Wert von y
sehen, wenn er versucht, ihn zu lesen. Threads, die x
nicht lesen, sind nicht garantiert betroffen.
Beachten Sie jedoch, dass diese Garantie im Speichermodell der zweiten Edition von JLS nicht vorhanden war. Dort hatten flüchtige Lese- und Schreibvorgänge keinen Einfluss auf die Reihenfolge der nicht flüchtigen Speicherzugriffe.