【发布时间】:2015-07-29 19:56:00
【问题描述】:
如果ExecutorService 在某个Servlet 的Tomcat 容器中运行,是否有必要关闭它。如果是,那么我应该在哪里调用关机?我尝试在 submit() 调用之后添加它,但是当我从客户端浏览器向 Servlet 发出另一个请求时,我得到一个 RejectedExecutionException 这可能是因为我关闭了?我试图了解它在 Tomcat 中的 Servlet 中是如何工作的,以及我应该如何使用它。
我在我的 webApplication 中执行以下操作(似乎在没有任何关闭的情况下工作正常):
// In configuration class
@Bean (name = "executorService")
public ExecutorService executorService() {
return Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1);
}
// In some other class
@Qualifier("executorService")
@Autowired
private ExecutorService executorService;
....
private void load() {
executorService.submit(new Runnable() {
@Override
public void run() {
doSomethingInTheBackground();
}
});
// If I enable this I will get a RejectedExecutionException
// for a next request.
// executorService.shutdown();
}
【问题讨论】:
-
@Marvin 我已阅读链接中的 cmets,谢谢。但是我应该在哪里调用关闭,因为它会为连续请求引发异常。如果我不关机会发生什么?
标签: java tomcat executorservice