quartz调用php,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 ListgetPlansForToday(){

Listlist=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(){

ListforToday = 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表达式

3048c923741a314c1ee4b345c66b2c0f.png

1d8ab830f523131a880cec4cf3ee35f4.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值