在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("已經添加任務調度表");
- }
- }
- 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("上次任務還沒執行完");
- }
- }
- }
- <?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>