★★ Java の宿題ここで答えます Part 59 ★★
■ このスレッドは過去ログ倉庫に格納されています
0108デフォルトの名無しさん
2006/12/06(水) 18:51:42TimerTaskクラスとTimerクラスの役割わかってる?
timer.schedule(timeBomb, 5 * 1000); // これは5秒後に1回してタスクは終了してる。
>スレッドrunをSystem.exit(0);を使わずに終了せよ。
そもそもループしてるわけではないので、1回実行されれば終わるだろう
System.exit(0);はアプリ自体を終了させる。これを使用しないで終了させる場合、
Timerクラスのスケジュールを削除する必要がある。(実際コメントアウトされてるしな timer.cancel();)
しかし、ただコメントアウト外しただけじゃすぐ実行されて5秒後に実行されるタスクも消滅して意味なし
なので、タスクが終わったかを確認してtimer.cancel();するとおkとなる。
まぁ、デーモンで動かせばいいんだけどな(今回はだめだけど)
System.out.println(new Date() + " 時限爆弾セット、5秒後に爆発"); の後に
Thread.sleep(1000 * 5);
while(true) {
if(!timeBomb.cancel()) {
timer.cancel();
break;
}
}
を追加してみる汁
■ このスレッドは過去ログ倉庫に格納されています