Estoy viendo un ejemplo de código de "Java Concurrency in Practice" de Brian Goetz. Él dice que es posible que este código permanezca en un bucle infinito porque "el valor de 'listo' podría no volverse visible para el hilo del lector". No entiendo cómo puede ocurrir esto ...pregunta sobre "Concurrencia de Java en la práctica" ejemplo
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;
}
}
Si 'listo' es volátil pero el número no es, ¿es posible que el número se imprima como 0? – zhiyuany
Hola Qberticus, esto es sólo una aclaración, si el hilo principal se completa antes del hilo del lector, entonces tenemos la oportunidad de imprimir el número 42, ¿verdad? –