スレッド動作について
コンストラクタの引数の指定により、2つのスレッドモードで動作する。
デーモンスレッド : デーモンスレッドとは、プログラム終了時にスレッドの実行終了を待ちません。プログラム終了のタイミングでデーモンスレッドの処理は中断され、終わることになります。生成したスレッドで終了処理を意識しないですむので、Timer処理では使い勝手がよいです。
ユーザスレッド : ユーザスレッドは、デーモンスレッドの反対でプログラムを終わるときに、スレッドの実行終了を待ちます。プログラムを終了しようとしても、ユーザスレッドの処理が終わる(returnされる)まで終了できません。(ユーザスレッドが生き残っている間は、プログラム実行状態です)
キャンセルメソッドについて
cancel()メソッド実行後はTimerクラスの資源が破棄されていて、再利用できない。同じ変数のTimerクラスで再スケジュールする場合は、newでインスタンスを新しく作り直す必要がある。
参考にさせて頂いたページ
・実験室