我正在使用缓存的线程池ExecutorService来运行一些异步后台任务。我提供了将线程交给ExecutorService的ThreadFactory(无论何时需要它们)。我对高速缓存线程池的理解是,在线程闲置60秒后,它由ExecutorService定义。线程终止时的Java 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
+1有趣的问题。我想知道终结者是否会起作用? – Rom1 2011-05-02 21:43:49
@ Rom1,有人曾在回复中建议实施'finalize'。我认为这太糟糕了,他们删除了它。应该指出的是,使用'finalize'意味着在GC和JVM中产生一些性能命中。 – 2011-05-02 23:04:54
我试图使用finalize方法,但它不起作用。该方法没有被调用。 – 2011-05-02 23:14:50