バッキングScheduledExecutorServiceを使用してスケジューラーのAPIに取り組んでいます。基本的な設計は、プロバイダーインスタンスをスケジューラーに登録することであり、スケジューラーは登録されたプロバイダーごとにScheduledFutureを維持します。プロバイダーは基本的に、起動タスクを取得する方法を知っているランナブルです。
私が抱えている問題は、予定されている未来をキャンセルするときにどうするかです。ScheduledFutureをキャンセルするAPIはブールパラメーターを取り、起動されているプロバイダーの中断を許可します。プロバイダーが強制終了されたときに、そのパラメーターの値とともにプロバイダーにアラートを送信することは理にかなっていると思います。これにより、必要なクリーンアップを実行できます。
ただし、ScheduledFutureをキャンセルする前に、プロバイダーインスタンスが強制終了されることをアラートすると、プロバイダーインスタンスは、そのパラメーターの値に関係なく、実行が完了するまでブロックすることでAPIを破壊する可能性があります。
その一方で、その値をtrueに設定してcancelが呼び出され、ScheduledFutureがキャンセルされてから、プロバイダーインスタンスに強制終了が通知されると、それに対して何かを行う機会が失われる可能性があります。
注:プロジェクトの要件により、Quartzを使用できません。そうでなければ、私はそれを使用したでしょう。私の質問はAPI設計に関するものなので、別のフレームワークを使用するように言って応答しないでください。
何か案は?