Le contenu de cet article concerne le code d'implémentation des tâches planifiées Web Java. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Écrire devant :
Dans les projets récents, il est nécessaire d'interroger régulièrement la table de la base de données chaque jour et de compléter les informations associées Opération de mise à jour des données. La première chose qui me vient à l'esprit est la classe Timer. Je me souviens que lorsque j'ai maintenu l'ancien système pour la première fois, j'ai ouvert une interface qui impliquait également des opérations de chronométrage. L'utilisation générale est enregistrée ci-dessous, afin qu'elle puisse être facilement retrouvée lors d'une utilisation ultérieure.
Comme elle est utilisée dans le Web, lorsque le projet est démarré, cette tâche planifiée doit être exécutée ici, et elle sera exécutée lors de son initialisation. programme de minuterie, puis dans le programme de minuterie, définissez le temps d'exécution correspondant et la classe de tâches qui doit être exécutée en fonction de vos propres besoins.
1. Écrivez d'abord la classe de tâches que nous devons exécuter
public class DailyReportTimerTask extends TimerTask{ public static Logger logger=Logger.getLogger(DailyReportTimerTask.class); public void run() { System.out.println("----开始执行任务--------------"); } }
La classe de tâches doit hériter de TimerTask, veuillez faire attention à ceci
2. Écrivez une classe pour gérer le type de tâche, l'heure et la fréquence de démarrage du programme
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. initialiser le projet Le moment venu, exécutez ce programme de minuterie. Vous pouvez utiliser l'écouteur
public class DailyReportListener implements ServletContextListener{ public void contextDestroyed(ServletContextEvent arg0) { } public void contextInitialized(ServletContextEvent arg0) { new TimeManager(); } }
4.
<!--DailyReportTaskListener 监听器--> <listener> <listener-class>edu.hue.erp.util.timer.DailyReportListener</listener-class> </listener>
Développer un programme pour effectuer des tâches planifiées sur le Web est à peu près comme ceci. Pour l'exécution spécifique du programme commercial, vous devez le réaliser en fonction de votre propre projet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!