2つの独立したスタンドアロンJavaポーリングツールを実行するシナリオがあり、5分の固定間隔で特定のタスクを実行します。
私のシナリオは(ポーリングサービスごとに):
1)タスクT0の実行に5分以上かかる場合、その間にT5が来て実行しようとすると、待機または再起動せずに、タスクT0を破棄します(重複するタスクを破棄します)
2)次のタスクは通常T10から始まります。
私の質問は、クォーツを使用するのはやり過ぎになるということです。TaskExecutorServiceを使用している場合、時間Xでタスクが開始されたら、時間X-5がすでに実行されていることを確認するにはどうすればよいですか?それを破棄する必要があります。
注:1)JDK<=6.0を使用する必要があります
2)私は春のようなフレームワークの下で使用していません。
3)デスクトップツールなので、起動する必要があり、実行されます。
コードスニペットや方向性は大歓迎です。
以下のコメントの回答を更新しました:
はい、単一のツールで実行されているタスク間です。ツールは異なり、ツール間には接続がなく、別々に実行され、関係はありません。
1つのツールが5分間隔で同じタスクを実行します(ファイルの1分ごとに、ディレクトリ内でファイルを検索し、見つかった場合はそれらのファイルを解析して処理します)。
たとえば、タスクが現在実行されているときに最初の1分から開始された場合(時間がかかる場合があります)、5分後にツールはそのタスクを再度起動して新しいファイルを探しますが、今回は解析/処理されません前のタスクがすでにいくつかのファイルの処理を実行しているため、新しいタスクは実行されず、システムはそれをダンプします(キューなし/待機なし/シーケンシャルジョブなし)。
別の新しいタスクが再び5倍の時間で実行され、他に実行されていない場合は、それらのファイルを解析して処理します。