スレッドがスリープしないという問題があります。
ここにコード全体を入れることはできません。したがって、再現するために、ここに 5 秒待機する基本的なコードを示します。
try {
int millisec = 5000;
System.out.println(new Date());
System.out.println("We wait " + millisec + " milliseconds");
Thread.sleep(millisec);
System.out.println(new Date());
} catch (Exception e) {
e.printStackTrace();
}
出力:
Thu Aug 22 20:01:42 CEST 2013
5000 ミリ秒待機
Thu Aug 22 20:01:47 CEST 2013
全て大丈夫。
しかし、このコードをスレッドに入れると、スリープ状態になりません。このコードの例:
try {
Thread aThread = new Thread(new Runnable() {
@Override
public void run() {
try {
int millisec = 5000;
System.out.println(new Date());
System.out.println("We wait " + millisec + " milliseconds");
Thread.sleep(millisec);
System.out.println(new Date());
} catch (Exception e) {
e.printStackTrace();
}
}
});
aThread.start();
} catch (Exception e) {
e.printStackTrace();
}
出力:
Thu Aug 22 20:07:30 CEST 2013
5000 ミリ秒待機
します。他には何もありません。スレッドは終了します。
理由がわかりません。アイデアはありますか?
編集: Eclipse と JUnit を使用してテストします。