Maison > Java > javaDidacticiel > le corps du texte

Code d'implémentation des tâches planifiées Web Java

不言
Libérer: 2018-09-21 10:58:28
original
2383 Les gens l'ont consulté

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("----开始执行任务--------------");
    }
}
Copier après la connexion

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();
      }
}
Copier après la connexion

 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();
    }

}
Copier après la connexion

 4.

<!--DailyReportTaskListener 监听器-->
    <listener>
        <listener-class>edu.hue.erp.util.timer.DailyReportListener</listener-class>
    </listener>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal