Я ищу образец кода из «Java Concurrency in Practice» Брайана Гетца. Он говорит, что возможно, что этот код останется в бесконечном цикле, потому что «значение« готово »никогда не станет видимым для потока читателя». Я не понимаю, как это может произойти ...вопрос о «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;
}
}
Если «готов» является изменчивым, но число не является, возможно ли, что число будет напечатано как 0? – zhiyuany
Привет, Qberticus. Это просто разъяснение, если основной поток завершен до чтения нити, тогда у нас есть шанс напечатать номер 42 правильно? –