在web运用中指定时间自动执行任务
在web应用中指定时间自动执行任务
1、web监听器
package test; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Timer; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ContextListener implements ServletContextListener { //定时器 Timer timer = null; //销毁 public void contextDestroyed(ServletContextEvent event) { timer.cancel(); event.getServletContext().log("定时器以销毁"); } //初始化 public void contextInitialized(ServletContextEvent event) { timer = new Timer(); event.getServletContext().log("定时器已启动"); //设置在每晚19:15分执行任务 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 19); calendar.set(Calendar.MINUTE, 16); calendar.set(Calendar.SECOND, 0); Date date = calendar.getTime(); timer.schedule(new Task(),date); event.getServletContext().log("已经添加任务调度表"); } }
2、具体任务实现类
package test; import java.util.Date; import java.util.TimerTask; /** * 具体任务 */ public class Task extends TimerTask { private static boolean isRunning = false; @Override public void run() { if (!isRunning) { isRunning = true; System.out.println("开始执行........."+new Date()); isRunning = false; }else{ System.out.println("上次任务还没执行完"); } } }
3、配置监听器
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- 定时监听器 --> <listener> <listener-class>test.ContextListener</listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
文章来源:http://techpool.iteye.com/blog/505885