私はここで質問されたのと同様の質問を見つけましたが、私の満足感はありませんでした。だから質問をもう一度言い直してください。Timer&TimerTaskとJavaのスレッド+スリープ
私は、定期的に(例えば1分間隔で)行う必要がある作業があります。スリープで無限ループを持つ新しいスレッドを作成するのではなく、Timertask &タイマーを使用する利点は何ですか?
コードは、ロジックの実行がかかる場合timertask-
TimerTask uploadCheckerTimerTask = new TimerTask(){
public void run() {
NewUploadServer.getInstance().checkAndUploadFiles();
}
};
Timer uploadCheckerTimer = new Timer(true);
uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000);
コードは、スレッドとsleep-
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
を使用してスニペット私は本当に私は一定のサイクルを欠場も心配する必要はありません使用してスニペットインターバル時間以上。
おかげで、
-Keshav
更新...これについてコメントしてください:
最近私が)のThread.sleep(対タイマーを使用しての間に別の違いを発見しました。現在のシステム時刻が午前11時であるとします。何らかの理由でシステム時刻を午前10時にロールバックした場合、Timerはタスクの実行が11:00 AMになるまでSTOPしますが、Thread.sleep()メソッドは妨げにならずにタスクの実行を継続します。これは、これら2つの間で何を使用するかを決定する主要な意思決定者になることができます。
ポイント:TimerとTimerTaskは廃止され、効果的にExecutorServiceに置き換えられましたが、あなたのポイントはまだあります。 – skaffman
ヒントをお寄せいただきありがとうございます。私はExecutorServiceを使用することにしました:) – Keshav
ありがとうございました。 – Keshav