在看到这本书的第三张的第一个程序例子的时候产生了一些疑问,希望大牛能够帮忙解惑,小弟不胜感激。例子如下:
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;
}
}
疑惑
作者在后面写到“NoVisiabilty可能会持续循环下去,因为读线程可能永远都看不到ready的值” 为什么呢?在我的理解当中肯定是会停止的呀,有没有可能是书中写错了呢。
我看书里好像是这样, 你这里貌似加了个大括号在while这块(不过不影响), 我大概理解了你的困惑: