您好,欢迎访问一九零五行业门户网

Quartz框架 实现任务调度

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表达式
其它类似信息

推荐信息