关闭

java中定时任务的实现

260人阅读 评论(0) 收藏 举报

我们在开发过程经常需要每隔一段时间重复执行一下相同的任务,比如说每天的数据的备份等,这个我们称之为定时任务,我们可以通过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)才是重复的执行。

 

 


 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5166次
    • 积分:207
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论