1.任务
job:是一个接口,只有一个方法void execute(jobexecutioncontext context),开发者实现该接口定义运行任务,jobexecutioncontext类提供了调度上下文的各种信息。job运行时的信息保存在 jobdatamap实例中;
2.触发器
trigger:是一个类,描述触发job执行的时间触发规则。主要有simpletrigger和 crontrigger这两个子类。当仅需触发一次或者以固定时间间隔周期执行,simpletrigger是最适合的选择;而crontrigger则 可以通过cron表达式定义出各种复杂时间规则的调度方案:如每早晨9:00执行,周一、周三、周五下午5:00执行等;
3.调度器
jobdetail:quartz在每次执行job时,都重新创建一个job实例,所以它不直接接受一个job的实例,相反它接收一个job实现类,以便运行时通过newinstance()的反射机制实例化job。因此需要通过一个类来描述job的实现类及其它相关的静态信息,如job名字、描述、关联监听器等信息,jobdetail承担了这一角色。
创建一个quartz工作
1.计划实体类
/**
*
*计划实体类
*/
public class plan {
private string date;
private string task;
public plan(string date, string task) {
this.date = date;
this.task = task;
}
public plan() {
}
@override
public string tostring() {
return plan [date= + date + , task= + task + ];
}
public string getdate() {
return date;
}
public void setdate(string date) {
this.date = date;
}
public string gettask() {
return task;
}
public void settask(string task) {
this.task = task;
}
}
2.提醒服务类
/**
*
* @提醒服务类
*
*/
public class remindservice {
//数据查询
public list getplansfortoday(){
list list=new arraylist();
plan p1=new plan(2016-11-3,呵呵);
plan p2=new plan(2016-11-4,嘿嘿);
list.add(p1);
list.add(p2);
return list;
}
//提醒服务类
public void ouputplan(){
list fortoday = getplansfortoday();
for (plan plan : fortoday) {
system.out.println(计划时间+plan.getdate()+计划内容+plan.gettask());
}
}
}
3.提醒任务类
/**
*
* @提醒任务类
*
*/
public class remindjob implements job {
private remindservice service=new remindservice();
public void execute(jobexecutioncontext arg0) throws jobexecutionexception {
service.getplansfortoday();
}
public remindservice getservice() {
return service;
}
public void setservice(remindservice service) {
this.service = service;
}
}
4.调度定时器任务
public class testjob {
public static void doremind() throws schedulerexception, interruptedexception{
//创建一个任务
jobdetail job =jobbuilder.newjob(remindjob.class).withidentity(job1, group1).build();
//创建一个触发器
/*trigger trigger = triggerbuilder.newtrigger()
.withidentity(triggerkey.triggerkey(mytrigger, mytriggergroup))
.withschedule(simpleschedulebuilder.simpleschedule()
.withintervalinmilliseconds(2))
.startat(new date(system.currenttimemillis()+2000))
.build();*/
trigger trigger=triggerbuilder.newtrigger().withidentity(mytrigger, group1).
withschedule(cronschedulebuilder.cronschedule(0 34 16 ? * 5#1 2016)).build();
schedulerfactory s=new stdschedulerfactory();
scheduler scheduler = s.getscheduler();
//注册并进行调度
scheduler.schedulejob(job,trigger);
//启动调度
scheduler.start();
//睡眠10s
//thread.sleep(10000);
//关闭调度
//scheduler.shutdown();
}
public static void main(string[] args) throws schedulerexception, interruptedexception {
doremind();
}
}
cron表达式