在Java中实现Job Scheduling

来源:互联网 发布:java任务调度系统 编辑:程序博客网 时间:2024/06/07 09:08

 在大多数项目中,在特定的时间或频率下你需要完成一些特定的任务。在本文中我们将演示如何用标准的Java Timer API来实现。

大多商业应用都会用报表和统计,很难想象没有这些帮助我们分析未来趋势的数据,我们还要这系统干什么。问题是如此多的数据我们该如何触发,如果处理对系统性能影响不大。比较好的方式是避开应用高峰,让服务器在闲暇时完成这些事。

下面是我的程序:

package net.nighttale.scheduling;
 

/**

 * @author kevin zhou

 *

 * 在Java中实现Job Scheduling

 * 创建日期 2004-7-13

 */

import java.util.TimerTask;

import java.util.Calendar;

import java.util.Date;

import java.util.Timer;

 

public class ReportGenerator extends TimerTask{

 

    /* (非 Javadoc)

     * @see java.util.TimerTask#run()

     */

    public void run() {

        System.out.println("Generating report");

 

       

    }

 

}

class MainApplication {

 

  public static void main(String[] args) {

    Timer timer=new Timer();

    Calendar date = Calendar.getInstance();

    date.set(

      Calendar.DAY_OF_WEEK,

      Calendar.SUNDAY

    );

    date.set(Calendar.HOUR, 0);

    date.set(Calendar.MINUTE, 0);

    date.set(Calendar.SECOND, 0);

    date.set(Calendar.MILLISECOND, 0);

    // Schedule to run every Sunday in midnight

    timer.schedule(

      new ReportGenerator(),

      date.getTime(),

      1000 * 60 * 60 * 24 * 7

    );

  }

}

我先简单解释一下,在我们的例子中ReportGenerator继承java.util.TimerTask,它又继承了java.lang.Runnable,我们需要覆盖run()方法。

调用时我们用schedule()方法让它每周日00分执行,避开服务器高峰,实现Job Scheduling的目的。

 

原创粉丝点击