在《java并发编程实战》这本书中有一个例子
package chapter3;
import java.util.Iterator;
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;
}
}
结果有可能是42,0或者是死循环。
我只能做出42这种情况。为什么?其它两种情况没成功过,加sleep也不会出现。