读书人

tomcat启动时执行一个任务应该如何配置

发布时间: 2012-10-14 14:55:07 作者: rapoo

tomcat启动时执行一个任务应该怎么配置?
import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class TestListener implements ServletContextListener {
private Timer timer = null;

public void contextInitialized(ServletContextEvent event) {
timer = new Timer(true);
timer.schedule(new TestTimer(), 0, 86400000);//milliseconds
}

public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
}
}

------------------------------------------

import java.util.TimerTask;

public class TestTimer extends TimerTask {
public void run() {
// do something ...
}
}

------------------------------------------

web.xml:

<listener >
<listener-class >test.TestListener </listener-class >
</listener >


我用这种方法配了,也成功了,不过有点小问题,就是这个任务本来应该执行一次创建一个timer,但是实际上创建了好几个timer,请问这是为什么啊?请高手指教

另外,timer定时1分钟,实际上非常不准,有时候2分钟都不执行一次,是我个人的问题还是本来就有这毛病?

[解决办法]
我用这种方法配了,也成功了,不过有点小问题,就是这个任务本来应该执行一次创建一个timer,但是实际上创建了好几个timer,请问这是为什么啊?请高手指教

另外,timer定时1分钟,实际上非常不准,有时候2分钟都不执行一次,是我个人的问题还是本来就有这毛病?

本来就是非常不准

不是你的问题

我做过定时的业务

用的quartz组件

你下载quartz-1.6.0.zip里面有帮助文档的
[解决办法]
如果要精确定时的话,用timer.scheduleAtFixedRate方法,timer.schedule方法是定时加执行的延迟,所以肯定超过定时的时间.

读书人网 >J2EE开发

热点推荐