これが私の問題です:
- イベントの受信後に実行される長時間の計算 (「タスク」と呼びましょう) があります。
- イベントは、処理するデータがまだあることを示しています。イベントには、タスクのデータを安全に処理できる場所のインデックスが含まれています。
- 新しいイベントを取得すると、最終的に処理する必要があるデータが増えます。
- 新しいイベントを取得したときに、既存のタスクをキャンセルしたくありませんが、終了させてから次のタスクを開始します。
- タスク中に複数のイベントを取得した場合、次のタスクは最新のイベントのみを処理し、それ以前のすべてのイベントを破棄する必要があります。
- 一度に 1 つのタスクを処理するのに十分なリソースしかありません。
Executors.newSingleThreadExecutor()
上記の条件を実装するために使用できるの修正版はありますか? BlockingQueue または AtomicReferences を使用して洗練された処理を行うことはできますか? 上記で説明したことを行う簡単な方法はありますか?