多くのコンポーネントを含むタスクの並列実行を実現するために、一連のワーカー スレッドを実行するために使用している fixedThreadPool があります。
すべてのスレッドが終了したら、メソッド (getResult) を使用してそれらの結果 (非常に大きい) を取得し、ファイルに書き込みます。
最終的に、メモリを節約して中間結果を確認できるようにするために、各スレッドが実行を終了したらすぐにその結果をファイルに書き込み、その後メモリを解放するようにします。
通常、run() メソッドの最後にその効果を表すコードを追加します。ただし、このクラスの他の特定のオブジェクトもこれらのスレッドを呼び出しますが、結果をファイルに書き込むことは望ましくありません。代わりに、結果を使用して他の計算を実行し、最終的にファイルに書き込みます。
そこで、ExecutorService を使ってスレッド終了のイベントにコールバック関数を付けられないかと考えていました。そうすれば、そのシナリオですぐに結果を取得してメモリを解放できますが、それらのスレッドが他のシナリオで使用されているときにコードを壊すことはありません。
そのようなことは可能ですか?