JavaでThread.sleep()
と奇妙なエラーがあります。何らかの理由で、私がいくつかのマシンでスリープを呼び出すと、それは決して返されません。私はこの現象の原因となるものが何であるか把握できません。 、それは無期限に一時停止し、それは私がリモートにログインしていますいくつかのマシン上で動作しますが、ほとんどのマシンで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...");
}
}
:最初は、私はエラーが私のコード内の別の場所かもしれませんthgouthので、私は可能な限り単純な睡眠のテストを行いました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)
この現象の原因は何ですか?それでも決して終わらない
UPDATE
改訂版、:
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();
}
}
私のために問題を修正し、あなたのキャッチの内側に解雇エラーがある場合はチェックしましたか?多分printStackTrace? –
あなたはそれがまだ発生していることを確認するために別のスレッドで試してみることができますか?あなたがやっていることは、メインスレッドをスリープ状態にして問題を引き起こす可能性があります。 –
問題は2番目のprintlnの復旧にはないと思いますか?たぶん欠けていますか? 'Thread.sleep(100);'はLinuxでも動作します。 –