>>107
TimerTaskクラスと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;
  }
}
を追加してみる汁