ho due thread:variabili volatili e avviene prima di ordinare
Discussione: 1
a = 1;
x = b;
Discussione: 2
b = 1
y = a
Qui a e b sono dichiarati volatile. Non ho capito come si crea un margine "happen-before" tra a = 1; e y = a; e tra x = b; e b = 1;
Capisco che utilizzando la variabile volatile si possa impedire la lettura di valori obsoleti dalla cache dei thread. Ma come può accadere una variabile volatile, prima di ordinare.
Specificamente, non ho capito questo:
una scrittura ad un campo volatili accade prima di ogni lettura successiva dello stesso campo .
Hoe funziona?
Vedere questa domanda recente e rispondere per molte informazioni rilevanti: http://stackoverflow.com/questions/3964317/memory-barriers-and-coding-style-over-a-java-vm – andersoj