이 기사의 내용은 Java 웹 예약 작업의 구현 코드에 관한 것입니다. 특정 참조 값이 있으므로 도움이 될 수 있습니다.
앞에 쓰기:
최근 프로젝트에서는 데이터베이스를 확인해야 합니다. 매일 정기적으로 테이블을 쿼리하고 관련 데이터의 업데이트 작업을 완료합니다. 가장 먼저 떠오르는 것은 Timer 클래스입니다. 이전 시스템을 처음 유지 관리할 때 타이밍 작업도 포함하는 인터페이스를 열었던 기억이 납니다. 다음 작업에 사용할 때 다시 쉽게 찾을 수 있도록 일반적인 사용법을 아래에 기록해 놓았습니다.
웹에서 사용하기 때문에 프로젝트가 시작되면 이 예약된 작업이 실행되어야 합니다. 초기화될 때 이 타이머 프로그램을 실행합니다. 시간이 오면 타이머 프로그램에서 해당 실행 시간과 필요에 따라 실행해야 하는 작업 클래스를 설정합니다.
1 먼저 실행해야 하는 작업 클래스를 작성합니다.
public class DailyReportTimerTask extends TimerTask{ public static Logger logger=Logger.getLogger(DailyReportTimerTask.class); public void run() { System.out.println("----开始执行任务--------------"); } }
작업 클래스는 상속해야 합니다. TimerTask. 이 점을 주의해주세요
2. 작업 유형, 프로그램 시작 시간 및 빈도를 관리하는 클래스를 작성합니다
public class TimeManager { public static Logger logger=Logger.getLogger(TimeManager.class); //时间间隔 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; //24小时执行一次 public TimeManager() { Calendar calendar = Calendar.getInstance(); /*** 定制每日23:10执行方法 ***/ calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 10); calendar.set(Calendar.SECOND, 0); Date date=calendar.getTime(); System.out.println(date); //如果第一次执行定时任务的时间 小于 当前的时间 //此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。循环执行的周期则以当前时间为准 if (date.before(new Date())) { date = this.addDay(date, 1); System.out.println(date); } Timer timer = new Timer(); DailyReportTimerTask task = new DailyReportTimerTask(); //安排指定的任务在指定的时间开始进行重复的固定延迟执行。 timer.schedule(task,date,PERIOD_DAY); } //增加几天 public Date addDay(Date date, int num) { Calendar startDT = Calendar.getInstance(); startDT.setTime(date); startDT.add(Calendar.DAY_OF_MONTH, num); return startDT.getTime(); } }#🎜🎜 # web.xml 파일에 해당 리스너를 구성합니다.
public class DailyReportListener implements ServletContextListener{
public void contextDestroyed(ServletContextEvent arg0) {
}
public void contextInitialized(ServletContextEvent arg0) {
new TimeManager();
}
}
위 내용은 Java 웹 예약 작업 구현 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!