我在 Jetty 上创建并运行了 Web 应用程序。我已经使用 ExecutorService 创建
了一个像这样的新线程池,
ExecutorService es = Executors.newFixedThreadPool(10);
但是我听说在应用服务器中创建自己的线程池是不可取的,我必须让应用服务器处理线程。
那么我怎样才能在 Jetty 中做到这一点。
请原谅我是 Jetty 的新手,提前致谢
这是程序,
public class SampleExecutors {
public SampleExecutors() {
ExecutorService executors = Executors.newFixedThreadPool(10);
Callable<List<Map<Record,String>>> text = new TextSearcher(domain, searchText);
Future<List<Map<Record,String>>> submit = executors.submit(text);
executors.shutdown();
}
}
log.info("Active threads count:"+Thread.activeCount());
在这里,在创建的工作线程完成其任务后,我正在调用 executors.shutdown()
但是,如果我执行 Thread.activeThreads(),我仍然可以看到创建的线程。
所以发生的情况是,由于实例化在构造函数中而不是单例,因此每次调用 SampleExecutors 时,都会创建一个新的线程池。
我不想使 Executors 静态或将其从构造函数中移动,我想知道在它们服务于任务后如何关闭或杀死创建的线程。