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

关闭tomcat时停止计划的计时器[重复],第1张

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

千万 不能 使用

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

使用

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

这是整个

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

@WebListenerpublic 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();    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5006989.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存