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的方式实现已经完成
纯手打,不喜勿喷,刚开始写博客,日后慢慢改善。望理解。