将不同的业务继承任务,定时器执行的时候只需要执行一个任务即可。
创建servlet,重写init(),service(),destroy()方法,初始化创建 并且启动定时器。
private Timer timer1 = null;
public void init(){
timer1=new Timer().schedule(new TimerTask(){
public void run() {
//执行task
}
},开始时间,间隔时间);
}
service()什么也不干
destroy销毁定时器
public void destroy() {
super.destroy();
if(timer1!=null){
timer1.cancel();
}
}
配置WEB.XML:
第一种方式:
设置每15分钟运行的Servlet
<servlet name='alarm' servlet-class='test.TestAlarm'>
<run-at>:00, :15, :30, :45</run-at>
</servlet>
设置每天16:30和20:00运行的Servlet
<servlet name='alarm' servlet-class='test.TestAlarm'>
<run-at>16:30,20:00</run-at>
</servlet>
第二种方式:
在servlet配置中增加 < load-on-startup >555< /load-on-startup > 这个数字越高,优先级越低,负数表示不自动加载
//以下例子通过定时器改变另一个定时器的延迟执行的时间
public class test {
public static void main(String[] args) {
/*String ss="cmsIm/chatlog";
System.out.println(File.separator);
ss=ss.replaceAll("\\/","\\"+File.separator);
System.out.println(ss);*/
final Date firstDate=new Date();
A a=new A();
//计算延迟时间的定时器
new Timer().schedule(a,firstDate,1000*60);
//执行任务的定时器
new Timer().schedule(new TimerTask(){
public void run() {
System.out.println("执行任务!"+A.delay);
}
},firstDate,A.delay);
}
}
class A extends TimerTask{
public static long delay=1000*10;
public void run(){
delay+=1000;
}
}