1、新建一个监听类,用于监听所有的定时器
import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class WebFrameListener implements ServletContextListener { WebFrameServiceEntrance wfs; /** * 启动 */ public void contextInitialized(ServletContextEvent arg0) { /* * 定时任务 * 1、基础数据初始化,在启动时执行一次; */ wfs = new WebFrameServiceEntrance(); wfs.webFrameServiceStart(); } /** * 销毁 */ public void contextDestroyed(ServletContextEvent arg0) { //调用结束的方法 wfs.webFrameServiceCancel(); } }
2、监听入口类
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Timer; public class WebFrameServiceEntrance { /** * 计时器,能够在指定时间内重复的执行操作 */ private Timer timer; long IntervalTime = 60 * 1000;//执行的周期时间:1分钟 public WebFrameServiceEntrance() { timer = new Timer(); } /** * 开始执行 */ public void webFrameServiceStart() { /** * 一次性调用,只在启动Web服务时调用下方法,用于启动时初始化相应内容 */ //初始化系统配置-只执行一次 SystemProperties.init(); /** * 增加调用定时任务,一分钟一次 */ Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); Date date = calendar.getTime(); timer.schedule(new WebFrameServiceTimerTask(), date, IntervalTime); } /** * 取消执行 */ public void webFrameServiceCancel() { // System.out.println("取消定时任务扫描器!"); timer.cancel(); timer = null; } }
3、新建任务处理类
import java.util.TimerTask; public class WebFrameServiceTimerTask extends TimerTask { /** * 被周期调用执行的方法 */ public void run() { //定时任务业务处理 } }