在java项目中配置一个定时器步骤如下:
1.在web.xml中配置一个listener,
<listener>
<listener-class>jzwhr.web.JianliListener</listener-class>
</listener>
class里面写上监听器类的全名。
2.编写一个监听器类(该类要实现ServletContextListener接口),
package jzwhr.web;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class JianliListener implements ServletContextListener {
private Timer timer=null;
public void contextInitialized(ServletContextEvent event) {
timer = new Timer(true);//创建Timer对象
//定时执行程序
timer.schedule(new TimeTaskJianli(),0,24*60*60*1000);//调用TimeTaskJianli()类(即每天要执行的任务),delay表示延迟毫秒数,0,24*60*60*1000表示每隔一天执行一次任务,60*60*1000表示一个小时;
}
public void contextDestroyed(ServletContextEvent event) {
//在这里关闭监听器,所以在这里销毁定时器。
timer.cancel();
event.getServletContext().log("定时器销毁");
}
}
TimeTaskJianli 是定时器要执行的任务。
3.下面表面写一个任务类(该类要继承timerTask类),
package jzwhr.web;
import java.util.Calendar;
import java.util.TimerTask;
public class TimeTaskJianli extends TimerTask {
public boolean b = true;
@Override
public void run() {
Calendar c = Calendar.getInstance();
if (!b) {
int i = c.get(c.HOUR_OF_DAY);
if (i > 1 && i <= 4)//判断在晚上1到四点执行一次
sendEmail();
} else {
sendEmail();
b = false;
System.out.println(c.get(c.HOUR_OF_DAY));
}
}
public void sendEmail(){
//该任务要执行的代码
}
}
配置完成后,定时器就好用啦。。。java中自带的。。
如果是ssh的项目的话,有spring支持的quartz,来实现的任务调度
//org.springframework.scheduling.quartz