У меня есть fixedThreadPool, который я использую для запуска кучки рабочих потоков для параллельного выполнения задачи со многими компонентами.
Когда все потоки закончены, я получаю их результаты (которые довольно большие) с помощью метода (getResult) и записывают их в файл.
В конечном счете, чтобы сохранить память и увидеть промежуточные результаты, я хотел бы, чтобы каждый поток записывал свой результат в файл, как только он заканчивает выполнение, а затем освобождает свою память.
Как правило, я бы добавил код к этому эффекту до конца метода run(). Однако некоторые другие объекты этого класса также вызывают эти потоки, но НЕ хотят, чтобы они записывали свои результаты в файл - вместо этого они используют свои результаты для выполнения других вычислений, которые в конечном итоге записываются в файл.
Итак, мне было интересно, можно ли подключить функцию обратного вызова к событию завершения потока с помощью ExecutorService. Таким образом, я могу сразу получить его результат и освободить память в этом сценарии, но не нарушать код, когда эти потоки используются в других сценариях.
Возможно ли это?