Javaで奇妙なエラーが発生しThread.sleep()
ています。何らかの理由で、一部のマシンでスリープを呼び出すと、スリープが戻らないことがあります。何がこの振る舞いを引き起こしているのか理解できません。最初は、エラーがコードの他の場所にある可能性があるため、可能な限り単純なスリープテストを行いました。
public class SleepTest {
public static void main (String [] args) {
System.out.println ("Before sleep...");
try {
Thread.sleep (100);
} catch (InterruptedException e) {
}
System.out.println ("After sleep...");
}
}
ほとんどのマシンで動作しますが、リモートでログインしているいくつかのマシンでは、printステートメント間で無期限に一時停止します。私は行動に変化がなく、30分まで待ちました。このエラーを表示しているマシンはLinuxマシンです。マシンに関するいくつかの情報は次のとおりです。
$ uname -a
Linux zone29ea 2.6.32-220.17.1.el6.x86_64 #1 SMP Tue May 15 17:16:46 CDT 2012 x86_64 x86_64 x86_64 GNU/Linux
$ java -version
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.6) (rhel-1.43.1.10.6.el6_2-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
この動作の原因は何でしょうか?
アップデート
まだ終わらない改訂版:
public class SleepTest {
public static void main (String [] args) {
new Thread () {
public void run () {
System.out.println ("Before sleep...");
try {
Thread.sleep (100);
} catch (InterruptedException e) {
e.printStackTrace ();
}
System.out.println ("After sleep...");
}
}.start();
}
}