Brian Goetz의 "Java Concurrency in Practice"의 코드 샘플을보고 있습니다. 그는 "ready의 값은 독자 스레드에서 결코 볼 수 없기 때문에"이 코드는 무한 루프에 머물 가능성이 있다고 말합니다. 나는"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 번 인쇄 할 수있는 기회가 있습니까? –