Java线程池执行器:更改线程终止行为

Java线程池执行器:更改线程终止行为,java,multithreading,threadpool,Java,Multithreading,Threadpool,我使用一个自定义线程工厂和线程来处理一系列任务。创建时的每个线程都会抓取一个通信器对象,该对象在其存在的整个过程中一直保持不变 我的问题是,一旦ThreadPoolExecutor决定减少其池大小并终止线程,我需要对Communicator对象进行一些清理 当ThreadPoolExecutor决定终止线程时,处理清理线程的最佳方法是什么?有一个我可以重写的函数吗?因为每个线程只调用一次run,所以您可以将finally{}块添加到自定义线程的运行中 @Override public void

我使用一个自定义线程工厂和线程来处理一系列任务。创建时的每个线程都会抓取一个通信器对象,该对象在其存在的整个过程中一直保持不变

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


当ThreadPoolExecutor决定终止线程时,处理清理线程的最佳方法是什么?有一个我可以重写的函数吗?

因为每个线程只调用一次run,所以您可以将finally{}块添加到自定义线程的运行中

@Override
public void run(){
    try{
        super.run();
    } finally {
        cleanup();
    }
}
ThreadPoolExecutor终止该线程时,将调用cleanup函数