Я использую службу исполнителя, создавая фиксированное количество потоков для получения данных HTTP GET.Как остановить поток исполнителей, когда Tomcat остановлен?
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]);
}
}
}
Когда Tomcat остановлен мы получаем эту ошибку:
SEVERE: The web application [/viewer] appears to have started a thread named [ThreadExecutor_5161616156] but has failed to stop it. This is very likely to create a memory leak.
Является ли это реальная проблема? Что я могу сделать, чтобы остановить tomcat правильно без этих служебных ошибок.
Возможный дубликат [Servlet] запустил поток, но не смог его остановить »- утечка памяти в Tomcat] (http://stackoverflow.com/questions/25126980/servlet-has-started-a-thread-but- fail-to-stop-it-memory-leak-in-tomcat) – OhadR