Обратный вызов Java ExecutorService при завершении потока

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

13
задан Shreyas Shinde 2 May 2011 в 21:26
поделиться