@donders

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

java Timerクラスのscheduleメソッドについて

24時間に1回(10:00:59を開始時間とする)new Task()処理を定期実行するソースを作成しました。
Calendar Cal = Calendar.getInstance();
Cal.set(Calendar.HOUR_OF_DAY, 10);
Cal.set(Calendar.MINUTE, 00);
Cal.set(Calendar.SECOND, 59);

Timer timer = new Timer();
timer.schedule(new Task(), Cal.getTime(), 86400000);

上記プログラムを数日間稼働させたところ
処理開始時間が10:00:59から次第にずれ始め、10:34:30などに実行されるようになりました。
日によって開始時間がずれることもなければ3,40分ずれる日もあります。
timer.scheduleは定期処理開始時間から24時間(86400000ミリ秒)経過後実施される動きで想定していたため、開始時間そのものがずれる可能性は考慮しておりませんでした。
また、new Task()処理の実行所要時間は開始時間のずれに影響しないものと考えておりました。
「必ず10:00:59に実施させたい」のであればscheduleではなくscheduleAtFixedRateを使用すればいい旨も理解はしておりますが
scheduleを使用した際、開始時間がずれていく原因を特定したいです。
どういった事象が開始時間を遅らせる要因となるか見当がつく方、ご教授いただけませんでしょうか。

0 likes

No Answers yet.

Your answer might help someone💌