在Tomcat中,我编写了一个ServletContextListener,它将在启动过程中启动ExecutorService,并在卸载时终止它。
我正在跟随ExecutorService的javadoc中的示例
public void contextDestroyed( ServletContextEvent sce )
{
executor.shutdown();
try
{
executor.awaitTermination( 50, TimeUnit.SECONDS );
}
catch( InterruptedException ie )
{
Thread.currentThread().interrupt();
}
}
我的问题是我应该在contextDestroyed()方法中传播InterruptedException吗?
最佳答案
我会说不。容器将contextDestroyed
方法作为通知来通知上下文即将被拆除,这并不是在征求您的许可。另外,如果您从Javadoc抛出异常,则Javadoc不会定义会发生什么,因此结果可能是不可预测的和/或不可移植的。
我要做的是在catch块内调用executor.shutdownNow()
强制终止执行程序(即“您有机会,现在停止”)。
关于java - 关闭ExecutorService,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1431573/