Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当Tomcat停止时,如何停止执行器线程?_Java_Multithreading_Tomcat_Threadpool_Executorservice - Fatal编程技术网

Java 当Tomcat停止时,如何停止执行器线程?

Java 当Tomcat停止时,如何停止执行器线程?,java,multithreading,tomcat,threadpool,executorservice,Java,Multithreading,Tomcat,Threadpool,Executorservice,我正在使用executor服务,通过创建固定数量的线程来执行HTTP GET数据检索 executorService = ExecutorServiceFactory.getInstance().getExecutorService(Config.getInstance().getNumberOfThreads(), "ThreadExecutor_"+UIDFactory.getInstance().createSessionID()); executorService.execute(new

我正在使用executor服务,通过创建固定数量的线程来执行HTTP GET数据检索

executorService = ExecutorServiceFactory.getInstance().getExecutorService(Config.getInstance().getNumberOfThreads(), "ThreadExecutor_"+UIDFactory.getInstance().createSessionID());
executorService.execute(new Retrieve(data));

private class Retrieve implements Runnable{
    private Vector<String> data;

    public WADORetrieve(Vector<String> data) {          
            this.data = data;
    }

    @Override
    public void run() {
        for(int i=0;i<data.length;i++){
            fetch(data[i]);
        }
    }
}    
executorService=ExecutorServiceFactory.getInstance().getExecutorService(Config.getInstance().getNumberOfThreads(),“ThreadExecutor”+UIDFactory.getInstance().createSessionID());
executorService.execute(新检索(数据));
私有类检索实现可运行{
专用矢量数据;
公共WADORetrieve(矢量数据){
这个数据=数据;
}
@凌驾
公开募捐{

对于(int i=0;i这是一个真正的问题。由执行器汇集的非守护进程线程不会自行消失,如果不调用执行器上的shutdown,则线程将保持活动状态并阻止JVM退出

制作一个ServletContextListener,在
ContextDistromed
上调用执行器上的shutdown


或者,您可以使ThreadFactory守护进程线程返回的线程在最后一个非守护进程线程终止时退出。由于您正在进行数据检索,因此最好避免这样做,因为这样会使数据库资源未关闭。

如何使用contextDestroyed停止web应用中的所有守护进程线程方法。因为我面临的问题是我问过的可能重复的问题