Quartz框架实现定时任务
任务调度三大核心概念:
- 任务(Job):最终要实施执行的操作,一般为数据库的操作
- 触发器(Trigger):控制任务执行的时机
- 调度器(Scheduler):借助于触发器,对任务执行进行调度
步骤:
- 添加jar包
https://pan.baidu.com/s/15sr7zf0TGYY_lb2atz_FlA提取码:s08t. - 定义一个实现类实现接口 Job
import org.quartz.Job;Jobimport org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job{
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("***************执行任务******************"+context.getJobDetail().getJobDataMap().get("uname"));
}
}
- 定义一个测试类测试`
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
import cn.yunhe.job.MyJob;
public class TestJob {
public static void main(String[] args) throws SchedulerException, InterruptedException {
//创建JobDetail对象,该对象需要关联自定义的job类
JobDetail jobDetail = new JobDetail("myjob", MyJob.class);
jobDetail.getJobDataMap().put("uname", "tom");
//创建触发器对象
SimpleTrigger st = new SimpleTrigger("st1");
//设置间隔时间,单位毫秒
st.setRepeatInterval(3000);
//设置开始时间,在当前时间的基础上增加1秒
st.setStartTime(new Date(System.currentTimeMillis()+1000));
//设置执行任务的次数,调用触发器对象的静态方法,设置为无限次
st.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
//创建调度器工厂
StdSchedulerFactory sf = new StdSchedulerFactory();
//获取调度器
Scheduler scheduler = sf.getScheduler();
//将jobDetail对象和触发器对象关联起来
scheduler.scheduleJob(jobDetail, st);
//开启调度器
scheduler.start();
//进程休眠10秒
Thread.sleep(10000);
//关闭调度器
scheduler.shutdown();
}
}