자바.util.Timer 를 사용 하여 작업 스케줄 링 을 실현 합 니 다.

작업 스케줄 링 이란 주어진 시간 점 을 바탕 으로 주어진 시간 간격 이나 주어진 실행 횟수 를 기준 으로 자동 으로 작업 을 수행 하 는 것 을 말한다.
예 를 들 어 우 리 는 한 시스템 이 매주 저녁 9 시 에 데이터베이스 파일 을 한 번 백업 하 기 를 희망 한다.이때 우 리 는 작업 스케줄 을 사용 하여 실현 할 수 있다.더욱 편리 하 게 하기 위해 서,우 리 는 tomcat 가 시 작 된 후에 이 스케줄 을 자동 으로 시작 해 야 한다.
다음은 Timer Task 의 API:

다음은 Timer 류 API 입 니 다.

다음 의 예 에서 두 가지 기능 을 실현 했다.
1.tomcat 의 웹 용기 의 작 동 및 닫 기 모니터링
2.웹 용기 가 시 작 된 후 작업 배정 대상,시간 과 주기.
웹 용기 의 변 화 를 모니터링 하기 위해 서 는 먼저 웹 xml 에 모니터 를 등록 해 야 합 니 다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
  xmlns="http://java.sun.com/xml/ns/javaee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <!--       TimerListener      ,   -->
  <listener >
   <listener-class>com.util.TimerListener</listener-class>
  </listener>

 <display-name></display-name> 
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>
두 번 째 단계,퀘 스 트 대상 정의,기본 Timer Task

package com.util;

import java.util.Timer;
import java.util.TimerTask;

/**
 * 1.        
 *  JDK --         TimerTask
 *
 */
public class DataBackup extends TimerTask{

  @Override
  public void run() {
    //               
    System.out.println("                 sql   ");

  }

}
세 번 째 단계.웹 용기 의 변 화 를 모니터링 하고 웹 용기 가 시 작 된 후에 작업 에 시간 과 주 기 를 배정 합 니 다.아래 코드 에는 몇 가지 예 가 포함 되 어 있 습 니 다.

package com.util;

import java.util.Date;
import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class TimerListener implements ServletContextListener{

  private static Timer timer;
  /**
   *   web    
   */
  @Override
  public void contextDestroyed(ServletContextEvent sce) {
    System.out.println("web    ");
    timer.cancel();
  }

  /**
   *   web    
   */
  @Override
  public void contextInitialized(ServletContextEvent sce) {
    System.out.println("web    ");
    /**
     *   Timer   
     */
    timer = new Timer();
    System.out.println("         ,              ");
    //      
    DataBackup backup = new DataBackup();
    //1 schedule(TimerTask task,Data time)
    //                 
    //     
    //timer.schedule(backup, new Date(115,8,10,9,54,0));

    //2 schedule(TimerTask task, Date firstTime, long period)
    //                           
    //timer.schedule(backup,new Date(115,8,10,10,0,0) ,2000 );

    //3schedule(TimerTask task, long delay) 
    //               。
    //timer.schedule(backup, 5000);

    //4 schedule(TimerTask task, long delay, long period) 
    //timer.schedule(backup, 5000, 2000);

    //5.    9        
    //timer.schedule(backup,new Date(115,8,11,9,0,0) ,24*60*60*1000);

    //6.       3        
    //timer.schedule(backup, new Date(115,8,12,3,0,0),7*24*60*60*1000); 

  }

}
이렇게 하면 tomcat 가 시작 되면 작업 대상 은 시간 과 주기 에 따라 실 행 됩 니 다.
요약:Timer 를 사용 하여 작업 스케줄 을 실현 하고 먼저 정의 작업 대상 을 만 듭 니 다.예 를 들 어 여기 Backup;그 다음 에 하나의 Timer 를 예화 하고 임무 대상 을 예화 시 키 며 수요 에 따라 대응 하 는 방법 으로 임무 대상 에 게 시간 과 주 기 를 분배 한다.이상 은 작업 스케줄 의 실현 입 니 다.이 타 이 머 를 언제 시작 하 는 지,즉 언제 부터 타 이 머 를 예화 하 는 지 는 실제 상황 에 따라 확인 해 야 합 니 다.예 를 들 어 위의 코드 는 웹 용기 가 시 작 된 후에 타 이 머 를 시작 하 는 것 입 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기