在大多数项目中,在特定的时间或频率下你需要完成一些特定的任务。在本文中我们将演示如何用标准的Java Timer API来实现。
大多商业应用都会用报表和统计,很难想象没有这些帮助我们分析未来趋势的数据,我们还要这系统干什么。问题是如此多的数据我们该如何触发,如果处理对系统性能影响不大。比较好的方式是避开应用高峰,让服务器在闲暇时完成这些事。
下面是我的程序:
package net.nighttale.scheduling;
/**
* @author kevin zhou
*
* 创建日期 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()
方法让它每周日
0
点
0
分执行,避开服务器高峰,实现
Job Scheduling
的目的。
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>