私のプログラムには、スケジューラと呼ばれるコンポーネントがあり、他のコンポーネントがコールバックしたい時点を登録できます。これは、Unix cron サービスと同じように機能するはずです。つまり、スケジューラに「1 時間ごとに 10 分後に通知する」ように指示します。
Javaには実際のコールバックがないことに気づきました。
これが私のアプローチです。すでにこのようなことをしているライブラリはありますか? 改善提案もお気軽にどうぞ。
スケジューラ パスへの呼び出しを登録します。
- 時、分、秒、年、月、dom、dow を含む時間指定。各項目は指定されていなくてもかまいません。つまり、「毎時/分などに実行する」という意味です。(crontab と同じように)
- スケジューラによって通知されたときに呼び出し元のオブジェクトに何をすべきかを伝えるデータを含むオブジェクト。スケジューラはこのデータを処理せず、格納して通知時に戻すだけです。
- 呼び出し元オブジェクトへの参照
起動時、または新しい登録要求の後、スケジューラは現在のシステム時刻の Calendar オブジェクトで開始し、この時点に一致するエントリがデータベースにあるかどうかを確認します。存在する場合は、それらが実行され、プロセスが最初からやり直されます。そうでない場合は、Calendar オブジェクトの時間が 1 秒増加し、内容が再チェックされます。これは、一致するエントリが 1 つ以上存在するまで繰り返されます。(離散事象シミュレーション)
スケジューラは、そのタイムスタンプ、スリープ、およびウェイクを毎秒記憶して、それが既に存在するかどうかを確認します。たまたまウェイクアップして時間が経過した場合は、時間になってジョブが実行された場合と同様に、最初からやり直します。
編集:Quartzを教えてくれてありがとう。しかし、私はもっと小さいものを探しています。