对于web应用,通常在tomcat启动的时候会启动一些定时任务,比如定时扫描目录文件或者数据库的表,根据扫描的结果做进一步的处理;
1. extends TimerTask类
public class myTask extends TimerTask {
// 构造函数里面可以增加一些常用的参数,比如servletContext
public myTask(ServletContext context) {
timer = new Timer();
}
// 实现如下方法
public void run() {
try {
。。。//如果此处有其他的类或者方法,最好将Exception throw到外层,以便此处扑捉到统一处理;
// 定时任务如果异常应该记录日志,不应该导致整个任务退出
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void start() {
if(timer != null){
// 注意如下两个方法的区别,scheduleAtFixedRate(fixed-rate) schedule(fixed-delay)
timer.scheduleAtFixedRate(this, 60 * 1000, 10 * 60 * 1000); //启动后延迟1分钟执行任务,每隔10分钟执行一次
timer.schedule(this, 60 * 1000, 10 * 60 * 1000); //启动后延迟1分钟执行任务,每隔10分钟执行一次
}
}
public void stop() {
if(timer != null){
timer.cancel();
}
}
}
2. 实例化并启动定时任务
myTask mtask = new myTask(servletContext);
myTask.start();