2012-11-07 99 views
0

我需要一个执行程序服务来调用第三方服务,以保存rtt和延迟,计划同时激发所有第三方请求。ExecutorService在哪里存储

我想知道是否应该为每个请求创建一个ExecutorService?或存储在线程本地?或每个应用程序一个?

如果我从不明确地拨打shutdown,会发生什么情况?

谢谢。

回答

3

很可能您希望每个应用程序都有一个ExecutorService。它实际上是一个变相的线程池,所以你可能不需要每个请求或每个线程都有一个线程池。

调用shutdown()不是必需的,但如果它在您计划重新部署的Web应用程序内运行,则会导致内存泄漏。

+0

内存泄漏?这是java男人。应用程序关闭应该关闭执行程序服务比我想象的。 – DarthVader

+0

如果你没有明确地调用System.exit并且依赖于所有非守护线程终止的事情,比如配置所有的Swing窗口来关闭Swing应用程序,调用'shutdown' *是必要的。仍然,+1 – Brian

+0

@DarthVader他指的是重新部署Web应用程序,如在JBoss或Tomcat中运行的servlet。 – Brian