我写了一个servlet实现这个功能,但是在启动程序的时候好像定时器没启动帮我看下哪里错了。
package sxdd.gps.maininfo;
import javax.servlet.ServletContextEvent;
public class MyTimer extends javax.servlet.http.HttpServlet implements javax.servlet.ServletContextListener {
private java.util.Timer timer = null;
public void contextInitialized(ServletContextEvent event) {
timer = new java.util.Timer(true);
event.getServletContext().log("定时器已启动");
System.out.println("定时器已启动");
timer.schedule(new MyTimerTask(),0,3*1000);
event.getServletContext().log("已经添加任务调度表");
System.out.println("已经添加任务调度表");
}
public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
event.getServletContext().log("定时器销毁");
System.out.println("定时器销毁");
}
}
package sxdd.gps.maininfo;
import java.util.Calendar;
import java.util.TimerTask;
import javax.servlet.ServletContext;
public class MyTimerTask extends TimerTask {
private static boolean isRunning = false;
private ServletContext context = null;
public void StatisticsTask(ServletContext context)
{
this.context = context;
}
@Override
public void run(){
if(!isRunning){
isRunning = true;
//需要实现的功能的代码
System.out.println("++++++++++++++++++++++++++++++");
//任务结束
isRunning = false;
}else{
context.log("上一次任务执行还未结束");
}
}
}
<listener>
<listener-class>sxdd.gps.maininfo.MyTimer</listener-class>
</listener>