Java EEタイマ
Java.tuil.TimerTaskを継承するタイミングタスククラスを書き、run()メソッドを書き換え、このメソッドでタスクビジネスコードを実現します.
タイマー管理クラス、start()メソッドを書いてタイマーを起動し、タスクの実行間隔をカスタマイズし、タイミングタスクを追加します.
Listenerを使用してタイマーを起動します.
package com.gao.timertask;
import java.util.TimerTask;
public class MyTimerTask extends TimerTask {
public MyTimerTask() {}
@Override
public void run() {
//
}
}
タイマー管理クラス、start()メソッドを書いてタイマーを起動し、タスクの実行間隔をカスタマイズし、タイミングタスクを追加します.
package com.gao.timertask;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
public class TimerManager {
/**
*
*/
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
private int hour = 2;
private int minute = 0;
private int second = 0;
private MyTimerTask timerTask;
public TimerManager() {}
public int getHour() {
return hour;
}
public void setHour(int hour) {
this.hour = hour;
}
public int getMinute() {
return minute;
}
public void setMinute(int minute) {
this.minute = minute;
}
public int getSecond() {
return second;
}
public void setSecond(int second) {
this.second = second;
}
public MyTimerTask getTimerTask() {
return timerTask;
}
public void setTimerTask(MyTimerTask timerTask) {
this.timerTask = timerTask;
}
//
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}
/**
*
*/
public void start() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
Date date=calendar.getTime(); //
//
// , 。 , 。
if (date.before(new Date())) {
date = this.addDay(date, 1);
}
Timer timer = new Timer();
// 。
timer.schedule(timerTask, date,PERIOD_DAY);
}
}
Listenerを使用してタイマーを起動します.
package com.gao.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.gao.timertask.TimerManager;
public class MyTimerTaskListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
@Override
public void contextInitialized(ServletContextEvent sce) {
WebApplicationContext context = WebApplicationContextUtils.
getRequiredWebApplicationContext(sce.getServletContext());
TimerManager timerManager = (TimerManager) context.getBean("timerManager");
timerManager.start();//
}
}