A. Create a maven project, the introduction of the jar package
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
<scope>compile</scope>
</dependency>
II. XxxJob write a class that implements the Job interface, and which way to achieve,
package com.cy;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RamJob implements Job{
private static Logger _log = LoggerFactory.getLogger(RamJob.class);
private static BankServiceImpl bsImpl = new BankServiceImpl();
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
_log.info("开始处理申请贷款业务");
bsImpl.doApplyLoan();
_log.info("申请贷款业务处理完成");
}
}
Add a class service processing, analog processing operations
package com.cy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BankServiceImpl {
private static Logger _log = LoggerFactory.getLogger(BankServiceImpl.class);
public void doLoan(){
System.out.println("银行开始放款");
_log.info("银行开始放款");
}
public void doTransfer(){
System.out.println("借款人A转帐1000给借款人B");
_log.info("借款人A转帐1000给借款人B");
}
public void doApplyLoan(){
System.out.println("申请人申请贷款");
_log.info("申请人申请贷款");
}
}
III. Processing tasks
package com.cy;
import java.util.Date;
import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RamQuartz {
private static Logger _Logger = LoggerFactory.getLogger(RamQuartz.class);
//设置任务启动时间
static long applyLoanTime = System.currentTimeMillis() + 10*1000L;
static long transferTime = System.currentTimeMillis() + 20*1000L;
static long loanTime = System.currentTimeMillis() + 30*1000L;
public static void main(String[] args) throws SchedulerException {
//1.创建调度器工厂
SchedulerFactory sFactory = new StdSchedulerFactory();
//2.由调度器工厂创建调度器
Scheduler scheduler = sFactory.getScheduler();
//3.创建jobDetail对象
JobDetail applyJD = JobBuilder.newJob(RamJob.class)
.withDescription("this is applyLoan task")
.withIdentity("ramJob", "ramJobGroup").build();
JobDetail transferJD = JobBuilder.newJob(RamJob2.class)
.withDescription("this is transfer task")
.withIdentity("ramJob2", "ramJob2Group").build();
JobDetail loanJD = JobBuilder.newJob(RamJob3.class)
.withDescription("this is loan task")
.withIdentity("ramJob3", "ramJob3Group").build();
//设置启动时间
Date applyStartTime = new Date(applyLoanTime);
Date transferStartTime = new Date(transferTime);
Date loanStartTime = new Date(loanTime);
//4.创建触发器对象
Trigger t1 = TriggerBuilder.newTrigger()
.withDescription("")
.withIdentity("ramJobTrigger", "ramJobTriggerGroup")
.startAt(applyStartTime)
.withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();
Trigger t2 = TriggerBuilder.newTrigger()
.withDescription("")
.withIdentity("ramJob2Trigger", "ramJob2TriggerGroup")
.startAt(transferStartTime)
.withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();
Trigger t3 = TriggerBuilder.newTrigger()
.withDescription("")
.withIdentity("ramJob3Trigger", "ramJob3TriggerGroup")
.startAt(loanStartTime)
.withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();
//5.调度器注册
scheduler.scheduleJob(applyJD, t1);
scheduler.scheduleJob(transferJD, t2);
scheduler.scheduleJob(loanJD, t3);
//6.调度器执行
scheduler.start();
_Logger.info("开始执行调度器");
}
}
Summary: direct use of quartz, write directly to a xxxjob achieve job class, and then perform six steps to achieve:
(1) Create Dispatcher Factory ScheduleFactory sf = new stdScheduleFactory ()
(2) retrieval schedule instance Scheduler s = sf.getScheduler ()
(3)创建jobDetail对象 JobDetail jd = JobBuilder.newJob(RAMJob.class)
.withDescription("this is a ram job")
.withIdentity("ramJob", "ramGroup").build();;
(4) create a trigger object t = TriggerBuilder.newTrigger the Trigger ()
.withDescription ( "")
.withIdentity ( "ramTrigger", "ramTriggerGroup")
.startAt (startTime)
.withSchedule (CronScheduleBuilder.cronSchedule ( "0/2 * * ? * * ")) // two seconds to perform a
.build ();
(5) The scheduler triggers registration and jobDetail s.scheduleJob (jd, t);
(6) scheduler performs s.start ();