//這是我的定時器類,用來定時執行某段任務;
package com.my.time;
import Java(Java教程 Java培訓 ).text.ParseException;
import Java.text.SimpleDateFormat;
import Java.util.Date;
import Java.util.Timer;
public class BugXMLTimer {
public Timer timer;
public void timerStart(){
timer = new Timer();
Date datetime=new Date();
Date midnightDate=new Date();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
midnightDate = sdf2.parse(sdf1.format(datetime)+" 23:00:00");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long in=midnightDate.getTime()-datetime.getTime();
System.out.println("before task");
//立刻執行,然後每隔30s執行一次
timer.schedule(new BugXMLTimerTask(), 0,30000);
}
public void timerStop(){
if(timer!=null)
timer.cancel();
}
public static void main(String[] args){
BugXmlTimer myTimer=new BugXMLTimer();
// TODO Auto-generated method stub
myTimer.timerStart();
}
}
//這是執行任務的類,即每隔一段時間要做的事情在這裡
package com.my.time;
import Java.util.TimerTask;
public class BugXMLTimerTask extends TimerTask {
@Override
public void run() {
System.out.print("run task");
}
}
//以下是出發定時操作的類,該類實現了ServletContextListener
public class MyTimerListener implements ServletContextListener {
private BugXmlTimer mytimer = new BugXMLTimer ();
public void contextInitialized(ServletContextEvent event) {
mytimer.timerStart();
}
public void contextDestroyed(ServletContextEvent event) {
mytimer.timerStop();
}
}
然後在web.XML裡部署一下,即可在程序啟動後運行定時器了!
com.my.time.MyTimerListener