タスクが中断されたときに、リソースの解放を強制する必要があります。そのために、this solutionを実装しました。しかしこれで、私がshutdown()
と呼ぶとき、ScheduledThreadPoolExecutor.getQueue()
のすべてのタスクは正しく強制されますが、私の仕事の中にはリソースが残っています。私はその動作を非常にうまく確認しました。これを理解しました。タスクが実行中のとき、彼はScheduledThreadPoolExecutor
キューに存在しません(明らかに分かります)。問題は、すべてのジョブ(キュー内または実行中)のリソースの解放を強制する必要があることです。ScheduledThreadPoolExecutorで実行中のジョブを取得するにはどうすればよいですか?
したがって、実行中のジョブを取得するにはどうすればよいですか。あなたは良いアイデアを持っていますか?
これは現在実際に実装されていますが、このソリューションでは、スケジュールされたすべてのジョブ(実行されたジョブも含む)への参照が保持されます。処理する必要があり、スケジューラーが処理するまでメモリに格納されますtdown。これはガベージコレクションに問題を引き起こすでしょうか? – ggarciao
最後のN先物は残しておく必要があります。あなたはある時点の後に先物をキャンセル/破棄することができます。システムがあまりにも遅れてしまった場合は、解決するのがより複雑な問題があります。 –