千万 不能 使用
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(); }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)