Der Inhalt dieses Artikels befasst sich mit dem Implementierungscode für geplante Java-Aufgaben. Ich hoffe, dass er für Freunde hilfreich ist.
Schreiben Sie vorne:
In neueren Projekten ist es notwendig, die Datenbanktabelle täglich regelmäßig abzufragen und die zugehörigen Daten zu vervollständigen Datenaktualisierungsvorgang. Das erste, was mir in den Sinn kommt, ist die Timer-Klasse. Ich erinnere mich, dass ich bei der ersten Wartung des alten Systems eine Schnittstelle geöffnet habe, die auch Timing-Operationen beinhaltete. Im Folgenden wird die allgemeine Verwendung protokolliert, sodass sie bei späterer Arbeit leicht wiedergefunden werden kann.
Da es im Web verwendet wird, sollte diese geplante Aufgabe hier ausgeführt werden, und sie wird ausgeführt, wenn sie initialisiert wird Stellen Sie dann im Timer-Programm die entsprechende Ausführungszeit und die auszuführende Aufgabenklasse entsprechend Ihren eigenen Anforderungen ein.
1. Schreiben Sie zuerst die Task-Klasse, die wir ausführen müssen
public class DailyReportTimerTask extends TimerTask{ public static Logger logger=Logger.getLogger(DailyReportTimerTask.class); public void run() { System.out.println("----开始执行任务--------------"); } }
Die Task-Klasse muss TimerTask erben, bitte beachten Sie dies
2. Schreiben Sie eine Klasse, um den Aufgabentyp, die Zeit und die Häufigkeit des Programmstarts zu verwalten
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(); } }
3 initialisiert werden, nur Um dieses geplante Programm auszuführen, können Sie den Listener
public class DailyReportListener implements ServletContextListener{ public void contextDestroyed(ServletContextEvent arg0) { } public void contextInitialized(ServletContextEvent arg0) { new TimeManager(); } }
4 verwenden. Der letzte Schritt besteht darin, den entsprechenden Listener
<!--DailyReportTaskListener 监听器--> <listener> <listener-class>edu.hue.erp.util.timer.DailyReportListener</listener-class> </listener>
Das Entwickeln eines Programms zum Abschließen geplanter Aufgaben im Web sieht ungefähr so aus. Für die spezifische Ausführung des Geschäftsprogramms müssen Sie es entsprechend Ihrem eigenen Projekt abschließen.
Das obige ist der detaillierte Inhalt vonImplementierungscode für geplante Java-Webaufgaben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!