如何使用监听器定时调度

我们在编写程序时,经常会用到定时调度任务的问题,比如,每经过5分钟执行某个操作,其实很简单,只要使用上监听器就可以,当服务已启动的时候,就会自动执行调度任务,下面详细为大家说下简单的使用方法。


1.编写自己的调度任务。

 

package com.yjd.listener;


import java.util.TimerTask;


import javax.servlet.ServletContext;


public class MyTask extends TimerTask {

private static boolean isRunning = false;

private ServletContext context = null;


public MyTask(ServletContext context) {

this.context = context;

}


@Override

public void run() {

if (!isRunning) {

context.log("开始执行指定任务 ");

isRunning = false;

// 你自己要执行的动作。。。

System.out.println("-------------------------------------");

context.log("指定任务执行结束 ");

} else {

context.log("上一次任务执行还未结束 ");

}


}


}


2.写一个ServletContextListener监听器。

 

package com.yjd.listener;


import java.util.Timer;


import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;


public class ContextListener implements ServletContextListener {

private Timer timer = null;


public void contextDestroyed(ServletContextEvent event) {

timer.cancel();

event.getServletContext().log("定时器销毁 ");

}


public void contextInitialized(ServletContextEvent event) {

timer = new Timer(true);

event.getServletContext().log("定时器已启动");

/**

* 每1秒(即1*1000毫秒)被触发一次,中间参数0表示无延迟

* 第二个参数"0"的意思是:(0就表示无延迟) 当你调用该方法后,该方法必然会调用 TimerTask 类 TimerTask 类 中的

* run() 方法, 这个参数就是这两者之间的差值,转换成汉语的意思就是说,用户调用 schedule()

* 方法后,要等待这么长的时间才可以第一次执行 run() 方法。

* 又如:每隔一个小时执行任务 timer.schedule(TimerTask, 0, 60 * 60 * 1000);

**/

timer.schedule(new MyTask(event.getServletContext()), 0, 1 * 1000);

event.getServletContext().log("已经添加任务调度表 ");

}


}

 



3.在配置文件中注册监听器。

 

<listener>

<listener-class>com.yjd.listener.ContextListener</listener-class>

</listener>

 



只需3步,就能完成定时调度问题,没有什么难度,学学就会……

如果还是有疑问,请到博主资源下载:http://www.111111111111111111.com


QQ:908599713


 

你可能感兴趣的:(timer,Class,任务调度,任务)