java web使用监听器实现定时周期性执行任务的功能

xiaoxiao2021-02-28  59

    java web使用监听器实现定时周期性执行任务的功能在做web项目的时候,有时需要做个定时的功能去执行某个

任务,或者定时周期性去执行某个任务,如定时邮件发送、文件删除等。那么,我们就需要借助监听器去实现这一个

功能,具体的实现过程如下:

    1.配置web.xml,添加监听器指定类

<!-- 定时监听器配置 --> <listener> <listener-class>listener.DuetimeListener</listener-class> </listener>

   

      2.监听类实现ServletContextListener接口,实现监听功能

public class DuetimeListener implements ServletContextListener{ private Timer timer = null; @Override public void contextDestroyed(ServletContextEvent event) { timer.cancel(); } @Override public void contextInitialized(ServletContextEvent event) { // 添加tomcat日志 event.getServletContext().log("定时器已启动"); System.out.println("定时器启动"); try { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 12); // 控制时,24小时制 calendar.set(Calendar.MINUTE, 0); // 控制分 calendar.set(Calendar.SECOND, 0); // 控制秒 Date time = calendar.getTime(); // 执行任务的时间,可自行修改,此时为12:00:00 timer = new Timer(true); //参数1:需要执行的类,参数2:执行时间,参数3:执行周期(参数可自行修改) //类需要继承util的TimeTask,默认执行类下的run()方法; timer.scheduleAtFixedRate(new TestTimeTask(), time, 1000 * 60 * 60 * 24); //隔一天(周期性)扫描执行方法, } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

   

      3.功能类继承TimerTask类,默认执行run方法

public class TestTimeTask extends TimerTask { @Override public void run() { System.out.println("定时扫描监听器程序开始执行,发送邮件"); deleteFile(); sendEmail(); //to do } public boolean deleteFile(){ System.out.println("定时执行删除文件的方法"); return true; //to do } public boolean sendEmail(){ System.out.println("定时执行发送邮件的方法"); return true; //to do } }

   

    4.该demo,只用到web.xml、DuetimeListener.java、TestTimeTask.java三个文件,只是实现定时监听、周期

性执行任务的功能,而邮件发送、文件删除等自定义功能需要自行添加上去,只需在run方法下修改邮件发送、文件

删除等功能即可;

    5.demo链接:http://download.csdn.net/detail/alan_liuyue/9834172


转载请注明原文地址: https://www.6miu.com/read-19253.html

最新回复(0)