Cuando leí el "concurrencia java en la práctica" c03, yo estaba confundido por el siguiente programa:java
public class NoVisibility {
private static boolean ready;
private static int number;
private static class ReaderThread extends Thread {
public void run() {
while (!ready)
Thread.yield();
System.out.println(number);
}
}
public static void main(String[] args) {
new ReaderThread().start();
number = 42;
ready = true;
}
}
Debido a la visibilidad de reordenación y el hilo, el bucle nunca se puede dejar, o la salida puede ser cero, pero lo he intentado muchas veces, y la salida siempre es 42. ¿Toda la razón es que soy muy afortunado?
Esta pregunta es exactamente la misma que [ésta] (http://stackoverflow.com/questions/1919469/question-about-java-concurrency-in-practice-example). – xea