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



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的方式实现已经完成

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

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值