在大多数项目中在特定的时间或频率下你需要完成一些特定的任务在本文中我们将演示如何用标准的Java Timer API来实现
大多商业应用都会用报表和统计很难想象没有这些帮助我们分析未来趋势的数据我们还要这系统干什么问题是如此多的数据我们该如何触发如果处理对系统性能影响不大比较好的方式是避开应用高峰让服务器在闲暇时完成这些事
下面是我的程序
package netnighttalescheduling;
import javautilCalendar;
import javautilDate;
import javautilTimer;
import javautilTimerTask;
/**
* @author kevin zhou
*
* 在Java中实现Job Scheduling
* 创建日期
*/
public class ReportGenerator extends TimerTask {
public void run() {
Systemoutprintln(Generating report);
//TODO generate report
}
}
class MainApplication {
public static void main(String[] args) {
Timer timer=new Timer();
Calendar date = CalendargetInstance();
dateset(
CalendarDAY_OF_WEEK
CalendarSUNDAY
);
dateset(CalendarHOUR );
dateset(CalendarMINUTE );
dateset(CalendarSECOND );
dateset(CalendarMILLISECOND );
// Schedule to run every Sunday in midnight
timerschedule(
new ReportGenerator()
dategetTime()
* * * *
);
}
}
我先简单解释一下在我们的例子中ReportGenerator继承javautilTimerTask它又继承了javalangRunnable我们需要覆盖run()方法
调用时我们用schedule()方法让它每周日点分执行避开服务器高峰实现Job Scheduling的目的