javaweb 定时

来源:互联网 发布:淘宝女装批发市场 编辑:程序博客网 时间:2024/04/27 22:10

因为需要写了一个简单的定时器,在网上搜了搜,自己改了改,把代码公布出来,方便大家学习。

1、新建一个包,在包里新建一个类,这里我们叫AutoRun类,他要继承ServletContextListener这个接口,代码如下

package com.timer.test;import java.util.Timer;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class AutoRun implements ServletContextListener {private Timer timer = null;public void contextInitialized(ServletContextEvent sce) {timer=new Timer(true);        timer.schedule(new Task(),0,1000*60*3);//这个函数的第一个参数是我们要执行的任务,他要继承TimerTask这个类        //,第二个参数为执行任务前等待时间,此处0表示不等待,第三个参数表示我们要定时的时间,单位是ms,比如3*60*1000为三分钟        //这句话就是每个三分钟执行Task里的run方法}public void contextDestroyed(ServletContextEvent sce) {timer.cancel();}}

2、接着是写上段代码的Task类,代码如下
package com.timer.test;import java.util.Date;import java.util.Iterator;import java.util.Set;import java.util.TimerTask;public class Task extends TimerTask{      public void run()   {      //下面这些代码可根据自己的实际需要自己写,下面只是我的代码,可删除      Set set =LinkRequest.map.keySet();      Iterator it = set.iterator();       while(it.hasNext()){     String key = (String) it.next();       Date  value = LinkRequest.map.get(key);     Date endTime =new Date();    double duration = (endTime.getTime()-value.getTime())/1000;     if(duration>300.0){    it.remove();    }    System.out.print(duration+"ms");           }      }}


最后一步,我们要在web.xml里配置一下监听,这样程序已启动,就触发了定时器

  <listener>     <listener-class>com.timer.test.AutoRun</listener-class>  </listener> 

0 0