Quartz定时任务(纯java方式实现)

来源:互联网 发布:知乎日报 rss 编辑:程序博客网 时间:2024/06/05 00:22


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;}@Overridepublic 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;@Overridepublic 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 {//创建jobJobDetail 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的方式实现已经完成

纯手打,不喜勿喷,刚开始写博客,日后慢慢改善。望理解。

原创粉丝点击