并非所有的系统中发生的事情都是由用户主动引发的系统有时候需要根据一定的规则触发相应的时间其实在jdkjava sdk就通过javautilTimer提供相应的功能一个简单的例子说明如何使用很简单
第一步我们需要建立一项任务我们的任务需要继承javautilTimerTask
package comdanan;
import javatextSimpleDateFormat;
import javautilDate;
import javautilTimerTask;
public class TimeTask extends TimerTask {
@Override
public void run() {
//没有秒钟报告现在的时刻任务
SimpleDateFormat sdf=new SimpleDateFormat(yyyy年MM月 HH:mm:ss);
Systemoutprintln(sdfformat(new Date()));
}
}
我们需要启动我们的任
package comdanan;
import javautilTimer;
/**
* @author Administrator
*
*/
public class Hello {
public static void main(String[] args) throws Exception {
Timer timer=new Timer();
timerschedule(new TimeTask() );//注册此任务在第一次运行后的秒钟时间执行以后每隔秒钟时间执行一次
}
}
schedule(TimerTask task long delay long period)中task指定了需要执行的任务delay指定在第一次运行任务后的多少毫秒执行此任务period参数指定在以后的多少毫秒执行一次任务
我们可以看到很遗憾的是Timer只可以指定多久执行一次并不能指定在具体那个时间点执行这项任务比如说我们需要每天午夜执行某一任务而正是QuartZ调度器起作用的时候了关于QuartZ的更多信息可以访问下面让我们来看QuartZ是怎么工作的吧!
创建一项任务
public class Shedule {//this class do daily task for message awoke and cycle task
public Shedule() {
}
public void say(){
//cycleTask();
messageAwoke();
}
}
package comdananaction;
import orgquartzJobExecutionContext;
import orgquartzJobExecutionException;
import orgspringframeworkschedulingquartzQuartzJobBean;
public class DailySay extends QuartzJobBean {
private Shedule sh ;
@Override
protected void executeInternal(JobExecutionContext arg)
throws JobExecutionException {
shsay();
}
public Shedule getSh() {
return sh;
}
public void setSh(Shedule sh) {
thissh = sh;
}
}
我们使用Spring的注入容器注入Shedule
调度cron任务
在Spring配置文件中
<bean id=task class=comdananactionShedule><property name=hibernateSession ref=hibernateSession></property>
</bean>
<bean id=job class=orgspringframeworkschedulingquartzJobDetailBean>
<property name=jobClass value=comdananactionDailySay></property>
<property name=jobDataAsMap>
<map>
<entry key=sh valueref=task></entry>
</map>
</property>
</bean>
<bean id=report class=orgspringframeworkschedulingquartzCronTriggerBean>
<property name=jobDetail ref=job></property>
<property name=cronExpression value= * * ?></property>
</bean>
启动任务
<bean id=schedulerFactoryBean class=orgspringframeworkschedulingquartzSchedulerFactoryBean><property name=triggers>
<list>
<ref bean=report/>
</list>
</property>
</bean>
这样你将会完成每天凌晨钟启动Shedule 任务的功能