インターネット上のリソースで新しいメールをチェックするアプリケーションがあります。新しいメールがある場合、それらに対して何らかの処理を行います。これは、メールの量によっては、処理に数秒から数時間かかる場合があることを意味します。
現在、処理を行うオブジェクト/プログラムはすでにシングルトンです。だから今、私はすでにチェックと処理を処理しているインスタンスが1つしかないことに気を配っています.
ただし、今は一度しか実行していないので、継続的に実行して、タイムリーに処理するために、ほぼ 10 分ごとに新着メールをチェックしたいと考えています。
Timer/Timertask を使用してこれを処理できることを理解しています。または、Scheduler/SchedulerTask を使用するhttp://www.ibm.com/developerworks/java/library/j-schedule/index.htmlというリソースを見つけた方がよいでしょう。しかし、私が恐れているのは、10分ごとに実行するように設定し、前のセッションがすでにデータを処理している場合、前のセッションが完了すると、新しいタスクが実行されるのを待っているスタックに置かれることです。私が恐れているのは、たとえば、最初の実行が 5 時間実行され、その後ずっと忙しかったため、その後は 5*6-1=29 が開始され、お互いにメールをチェックしたり、/サーバーを中断せずに何らかの処理を行います。
これを解決する方法を知っている人はいますか?
PS、現在アプリケーションをセットアップしている方法は、Tomcat サーバーで Java サーブレットを使用していることです。これは、サーバーの起動時に起動され、メイン プログラムのシングルトン インスタンスを作成し、フェッチ/処理を行うメソッドを呼び出します。そして、私が望むのは、「x」時間ごと(10分程度)にそのフェッチ/処理を繰り返し、実際には1つのインスタンスのみがこれを実行していることを確認し、実行ごとに10分ほど休ませることです。