Jac*_*ine 10 java multithreading servlets exception-handling exception
在Tomcat中,我编写了一个ServletContextListener,它将在启动期间启动ExecutorService并在卸载时终止它.
我在关注ExecutorService的javadoc中的示例
public void contextDestroyed( ServletContextEvent sce )
{
executor.shutdown();
try
{
executor.awaitTermination( 50, TimeUnit.SECONDS );
}
catch( InterruptedException ie )
{
Thread.currentThread().interrupt();
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我应该在contextDestroyed()方法中传播InterruptedException吗?
我会说不。contextDestroyed容器调用该方法,作为通知上下文即将被拆除,而不是征求您的许可。另外,如果您从Javadoc抛出异常,则Javadoc不会定义会发生什么,因此结果可能是不可预测的和/或不可移植的。
我要做的是executor.shutdownNow()在catch块内调用以强制终止执行程序(即“您有机会,现在停止”)。