ホームページ  >  記事  >  Java  >  Java Web スケジュールされたタスクの実装コード

Java Web スケジュールされたタスクの実装コード

不言
不言オリジナル
2018-09-21 10:58:282366ブラウズ

この記事の内容は Java Web スケジュールされたタスクの実装コードに関するものです。必要な方は参考にしていただければ幸いです。

前に書く:

最近のプロジェクトでは、毎日定期的にデータベース テーブルにクエリを実行し、関連するクエリを完了する必要があります。データ更新操作。最初に思い浮かぶのは Timer クラスです。私が古いシステムを最初に保守したときに、タイミング操作も必要とするインターフェイスを開いたのを覚えています。以降の作業で使用するときに簡単に見つけられるように、一般的な使用法を以下に記録します。

Webで使用するため、プロジェクト開始時にこのスケジュールされたタスクを実行する必要があり、これは初期化時に実行されます。タイマー プログラムを作成し、そのタイマー プログラムで、必要に応じて、対応する実行時間と実行する必要があるタスク クラスを設定します。

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

4 を使用できます。最後のステップは、対応するリスナー

public class DailyReportListener implements ServletContextListener{
    public void contextDestroyed(ServletContextEvent arg0) {
    
    }
    public void contextInitialized(ServletContextEvent arg0) {
        new TimeManager();
    }

}
## をweb.xml ファイル

# Web 上でスケジュールされたタスクを完了するためのプログラムの開発は、大まかに次のようになります。ビジネス プログラムの具体的な実行については、独自のプロジェクトに従って完了する必要があります。

以上がJava Web スケジュールされたタスクの実装コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。