Java ThreadPoolExecutor:更改线程终止行为

时间:2014-09-16 15:07:47

标签: java multithreading threadpool

我正在使用ThreadPoolExecutor以及自定义ThreadFactory和Thread来处理一系列任务。创建时的每个线程都会抓取它保留的Communicator对象,以便它存在。

我的问题是,一旦ThreadPoolExecutor决定减少其池大小并终止一个线程,我需要对该Communicator对象进行一些清理。

当ThreadPoolExecutor决定终止线程时,处理线程清理的最佳方法是什么?有可以覆盖的功能吗?

1 个答案:

答案 0 :(得分:0)

因为run()只为每个线程调用一次,所以你可以将finally {}块添加到自定义线程run()中......

@Override
public void run(){
    try{
        super.run();
    } finally {
        cleanup();
    }
}

当ThreadPoolExecutor终止该线程时,将调用cleanup()函数。