Verständnis passiert-vor und Synchronisation [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Wie zu verstehen passiert, bevor konsequent 4 Antworten

Ich versuche Java zu verstehen passiert-vor der Bestellung concept und es gibt ein paar Dinge, die sehr verwirrend wirken. Soweit ich das beurteilen kann, handelt es sich bei "happen before" nur um eine Reihenfolge der Aktionen, und es werden keine Garantien für die Ausführungsreihenfolge in Echtzeit gegeben. Eigentlich (betone meins):

Es sollte beachtet werden, dass das Vorhandensein einer Beziehung zwischen zwei Aktionen vor dem Auftreten nicht unbedingt impliziert, dass sie in dieser Reihenfolge in einer Implementierung stattfinden müssen.Wenn die Nachbestellung @ ergi Ergebnisse im Einklang mit einer legalen Hinrichtung, es ist nicht illegal.

Also, alles was es sagt ist, dass wenn es zwei Aktionen gibtw (schreibe undr (lesen) so dasshb (w, r), alsr könnt tatsächlich passiert vorw in einer Ausführung, aber es gibt keine Garantie dafür. Auch das Writew wird vom read @ beobachtr.

Wie kann ich feststellen, dass zwei Aktionen zur Laufzeit nacheinander ausgeführt werden? Zum Beispiel

public volatile int v;
public int c;

Aktionen

Thread A
v = 3;  //w

Thread B
c = v;  //r

Hier haben wirhb(w, r) aber das heißt nicht, dassc enthält den Wert3 nach Zuordnung. Wie erzwinge ich dasc ist mit 3 belegt? Hatsynchronization order solche Garantien geben?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage