看一下这个简单的 Java 程序:
import java.lang.*;
class A {
static boolean done;
public static void main(String args[]) {
done = false;
new Thread() {
public void run() {
try {
Thread.sleep(1000); // dummy work load
} catch (Exception e) {
done = true;
}
done = true;
}
}.start();
while (!done);
System.out.println("bye");
}
}
在一台机器上,它打印“再见”并立即退出,而在另一台机器上,它不打印任何东西并永远坐在那里。为什么?