Hos*_*ein 1 java concurrency concurrent-programming
我正在阅读这本书:"Java Concurrency in Practice",以更好地理解java并发的工作原理.在第3章第3.1节:可见性本书试图展示可见性问题是如何发生的.这是示例代码(书中的清单3.1):
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;
}
}
Run Code Online (Sandbox Code Playgroud)
该书说NoVisibility可以永远循环,因为ready的值可能永远不会对读者线程可见.怎么可能.我的一般理解是,无论如何,准备将在某个时间成为现实.但我无法理解为什么这可能不会发生并且循环永远存在.有人可以帮助我更好地理解这一点.
| 归档时间: |
|
| 查看次数: |
827 次 |
| 最近记录: |