私は、30分実行する予定のタイマークラスを持っています。土曜日から午前12時まで、毎日午前0時に実行するタイマークラスがあります。Javaタイマーは1時間ごとに終了します。土曜日 - 土曜日
どうすればいいですか?
ありがとうございました。
私は、30分実行する予定のタイマークラスを持っています。土曜日から午前12時まで、毎日午前0時に実行するタイマークラスがあります。Javaタイマーは1時間ごとに終了します。土曜日 - 土曜日
どうすればいいですか?
ありがとうございました。
java.util.Timer
クラスは、この使用して繰り返しタスクを実行する機能を持っていない:
Timer
を構成することはできません繰り返されるタスクは「固定遅延実行」です。つまり、新しいタスクは、前のタスクのエンドポイントに基づいてスケジューリングされる。その結果、時間のずれが発生します。簡単な解決策は以下のとおりです。
Timer
オブジェクトschedule(TimerTask task, Date time)
を作成します。Timer
はスケーラブルであり、多くのスケジュールされたタスクに効率的に対処できる必要があります。
上記の説明では、各タスクが30分間実行されるという要件は考慮されていません。実際に何を意味するのかは不明ですが、のタスクを実行する場合は、 30分を超えないようにしてください。タスクが実行されているときにタスクを実行するスレッドを中断するウォッチドッグを実装する必要があります。タスクは、スレッド割り込みを適切にチェックおよび/または処理するために実装する必要があります。
あなたはループを走らせることができ、そのループの中でただ1時間スリープするか、長い間あなたが望むだけです。この作品のようなものはありますか?
for(int i = 0; i < 24; i++) {
// do whatever you want to do
try {
// Sleep for an hour
Thread.sleep(6000000);
catch(InterruptedException e) {
e.printStackTrace();
}
}
私はイェーイ...その後...質問を誤解...しかし、それはあなたが望んだ場合しているのでしょうか?
java.util.Timer、javax.swing.Timerなどについてお話ししていますか? –
@StephenC私はjava.util.Timerについて言及しています。指定しないと申し訳ありません。 – quibblify