Я использую кешированный пул потоков ExecutorService для запуска некоторых асинхронных фоновых задач. Я предоставил свой ThreadFactory, который передает потоки в ExecutorService (когда это необходимо). Мое понимание пула кэшированных потоков заключается в том, что после того, как поток простаивает в течение 60 секунд, он обрабатывается ExecutorService.
Я хочу выполнить некоторую очистку состояния, когда мой поток вот-вот будет завершен. Каков наилучший способ достичь этого? ExecutorService не всегда обеспечивает привязки к жизненному циклу потока.
Я не хочу отключать свой ExecutorService - полезно для запуска задач по мере их появления.
ExecutorService executor = Executors.newCachedThreadPool(new MyThreadFactory());
// Do some work
executor.submit(new MyCallable());
// Need a way for the ExecutorService to notify me when it is about to
// terminate my thread - need to perform some cleanup
Спасибо,
Шреяс