1.首先说一下Quartz的三个核心概念
任务:就是执行的工作内容。Quartz提供Job接口来支持任务定义
触发器:定义触发Job执行的时间触发规则。Quartz提供Trigger类及其子类支持触发器功能,
调度器:Quartz提供了Scheduler接口,将工作任务和触发器绑定,保证任务可以在正确的时间执行
2.这是定时任务需要用到的jar包
这里附加上下载链接
链接:http://pan.baidu.com/s/1jH5FvZC 密码:9066
3.先附加上整个项目的所有包
4.下面是每个类的具体代码
package com.qua.entity;
public class Plan {
public Plan() {
super();
}
public Plan(String task, String time) {
super();
this.task = task;
this.time = time;
}
private String task;
private String time;
public String getTask() {
return task;
}
public void setTask(String task) {
this.task = task;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
@Override
public String toString() {
return "Plan [task=" + task + ", time=" + time + "]";
}
}
package com.qua.service;
import java.util.ArrayList;
import java.util.List;
import com.qua.entity.Plan;
public class PlanService {
public void show(){
List<Plan> plans=getForData();
for (Plan plan : plans) {
System.out.println(plan);
}
}
private List<Plan> getForData(){
List<Plan> list=new ArrayList<Plan>();
list.add(new Plan("开会", "08:50"));
list.add(new Plan("需求分析", "10:50"));
return list;
}
}
package com.qua.job;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.qua.service.PlanService;
public class PlanJob implements Job {
private PlanService ps;
@Override
public void execute(JobExecutionContext jec) throws JobExecutionException {
ps=new PlanService();
//获取外部传入的参数
JobDataMap map=jec.getJobDetail().getJobDataMap();
String name=map.getString("username");
System.out.println(name);
ps.show();
}
}
package com.qua.test;
import java.util.Date;
import org.quartz.CronTrigger;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
import com.qua.job.PlanJob;
public class Test {
public static void main(String[] args) throws Exception {
//创建job
JobDetail detail=new JobDetail("myJob", "myGroup", PlanJob.class);
//向程序内部传入参数
JobDataMap map=detail.getJobDataMap();
map.put("username", "张三");
//这里的触犯器是规定的时间间隔内做的事,不是很常用
// //创建触发器
// SimpleTrigger trigger=new SimpleTrigger("myTrigger",SimpleTrigger.REPEAT_INDEFINITELY, 3000);
// //设置开始执行时间
// trigger.setStartTime(new Date(System.currentTimeMillis()+1000));
//下面这个是在指定时间做的事,在日常开发中是比较常用的
//指定时间
CronTrigger trigger=new CronTrigger("myCron", "myGroup", "40 10 11 * * ?");//这里有三个参数(1.触发器的名称2.触发器的组3.时间表达式)
//创建调度工厂
SchedulerFactory factory=new StdSchedulerFactory();
//创建调度器
Scheduler scheduler=factory.getScheduler();
//绑定job 和触发器
scheduler.scheduleJob(detail, trigger);
//启动
scheduler.start();
// //停止定时任务
// scheduler.shutdown();
}
}
5.下面附上cron表达式的一些参数
下面是一些事例
至此,纯java的方式实现已经完成
纯手打,不喜勿喷,刚开始写博客,日后慢慢改善。望理解。