Я использую кэшированный пул потоков 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
Спасибо,
Shreyas