您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

关闭tomcat时停止计划的计时器[重复]

关闭tomcat时停止计划的计时器[重复]

千万 使用Timer在Java EE的环境!如果任务抛出运行时异常,则整个Timer事件将被杀死,并且将不再运行。基本上,您需要重新启动整个服务器才能使其再次运行。而且,它对系统时钟的变化很敏感。

使用ScheduledExecutorService代替。它对任务中引发的异常或系统时钟的更改不敏感。您可以通过其shutdownNow()方法关闭它。

这是整个servletcontextlistener实现的示例(请注意:web.xml由于有了新的@WebListener注释,因此无需注册):

@WebListener
public class BackgroundJobManager implements servletcontextlistener {

    private scheduledexecutorservice scheduler;

    @Override
    public void contextInitialized(ServletContextEvent event) {
        scheduler = Executors.newSingleThreadScheduledExecutor();
        scheduler.scheduleAtFixedRate(new YourParsingJob(), 0, 5, TimeUnit.HOUR);
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        scheduler.shutdownNow();
    }

}
其他 2022/1/1 18:14:10 有499人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶