次の単純な 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");
}
}
あるマシンでは、「さようなら」と出力してすぐに終了しますが、別のマシンでは何も出力せず、永遠にそこにとどまります。なんで?