我正在使用緩存的線程池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