Сейчас я читаю Java Concurrency in Practice и кое-что не могу понять.
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;
}
}
а автор говорит
NoVisibility может зацикливаться бесконечно, потому что значение ready может никогда не стать видимым для потока чтения.
И объяснения нет или может оно где-то потом, а пока я совсем запутался. Я был бы очень признателен за любое объяснение.