java中定时任务的实现

我们在开发过程经常需要每隔一段时间重复执行一下相同的任务,比如说每天的数据的备份等,这个我们称之为定时任务,我们可以通过java中自身提供的接口实现,通过监听器(Listener)和定时器(Timer)定时执行某个任务:

web.xml配置:
<listener>
<listener-class>wyf.hxl.TaskListener</listener-class>
</listener>

TaskListener类这样写:

mport java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class TaskListener implements ServletContextListener {

 private Timer timer = null;
 public void contextDestroyed(ServletContextEvent sce) {

  System.out.println("11");
  timer.cancel();
 }

 public void contextInitialized(ServletContextEvent sce) {
  
  timer = new Timer();
  timer.schedule(new task(), 0, 3000);
 }
}

task类这样写:

import java.util.TimerTask;

public class task extends TimerTask {

 public void run() {

  System.out.println(“重复执行”);
  }
}

 

这样就可以实现定时任务的执行,ServletContextListener能够监听ServletContext 对象的生命周期,实际上也就是监听整个web应用的生命周期,当Servlet 容器启动Web 应用时调用contextInitialized(ServletContextEvent sce) 方法,在调用完该方法之后,容器再对Filter 初始化。当Servlet 容器终止Web 应用时调用contextDestroyed(ServletContextEvent sce)方法,在调用该方法之前,容器会先销毁所有的Servlet 和Filter 过滤器。

 

另外,Timer.schedule(TimerTask task, long delay)是延迟delay时间再执行task任务,并且只执行一次。

schedule(TimerTask task, long delay, long period)才是重复的执行。

 

 


 

 

阅读更多
博主设置当前文章不允许评论。

没有更多推荐了,返回首页

不良信息举报

java中定时任务的实现

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭