Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

特定の日時で実行

特定の日時になったら実行するプログラムを作りたいのですが、ループを回して時間を判定するしかないのでしょうか?
他に方法がありましたら教えていただきたいです。

4

回答

6044

閲覧

4件の回答

評価

0

「特定の時間」とは具体的に何だ。
1.何時何分何秒に実行
2.何秒ごとに実行
3.あと何秒後に実行

たいていのOSには、特定の時間に特定の処理を実行するスケジュール機能がある。
Windowsならタスク、Unix系ならcronというやつだ。
とくに1の場合は、これを使うのが望ましい。
2も分単位となれば、こちらの方がいいかも知れない。

2でも、短い時間だったり処理的にプログラム側で制御したい場合もある。それなら、タイマーと呼ばれるプログラムの機能(言語またはライブラリ)を使う。
3はこちらで実行する方が普通簡単だ。

評価

0

返答ありがとうございます。
1の何時何分何秒に実行させたいです。
「時間になったらclassファイルを実行する」ということではなく、「プログラム内で時間になったら処理を行う」ということをしたいのです。
説明足らずで申し訳ないです。
調べてみましたが、タスクやcronではそのようなことはできないようです。
java.util.Timer で周期実行や遅延実行はできるものの、日時を指定してできる方法はありませんでした。
プログラム内に組み込んで行う方法はありませんか?

評価

10

それまで、起動してる必要があるのか?

評価

0

起動してる必要があるなら、まあ自分で時刻を見るのが楽ではある。
ループで待つのは一番分かりやすいが、正直スマートではないので、別の方法も考えてみよう。
例えば1秒ごとにタイマー処理して現在時刻を取ってもいい。
タイマーは遅延もあるが、そもそもコンピュータの時刻による起動はどれも多かれ遅延する。

OSのキューやRMI、JMX、あるいはメールやhttpなどポートを介した方法で、外部からアプリに指定時刻になったことを報せる手もある(通知側はcron起動する)。

自分のアプリがどういうものか、どれくらいの精度が必要か。色々考えて決める必要がある。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。