首先写一个Quartz的简单例子:
1.新建一个maven项目,pom.xml中加入quartz的依赖:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
2.新建quartz.properties文件,放在classpath下,添加如下配置:
#此调度程序的名称将为“MyScheduler”
org.quartz.scheduler.instanceName = MyScheduler
#线程池中有3个线程,这意味着最多可以同时运行3个job。
org.quartz.threadPool.threadCount = 3
#quartz的所有数据,包括job和trigger的配置,都会存储在内存中(而不是数据库里)
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
3.新建一个类继承org.quartz.Job:
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class QuartzJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date));
}
}
4.创建Scheduler执行任务:
import com.quartzdemo.QuartzJob;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
public class QuartzTest {
public static void main(String[] args) {
try {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
JobDetail job = newJob(QuartzJob.class).withIdentity("job1","group1").build();
Trigger trigger = newTrigger().withIdentity("trigger1","group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(1)
.repeatForever())
.build();
scheduler.scheduleJob(job,trigger);
// Thread.sleep(6000);可以指定执行多长时间后关闭Scheduler
// scheduler.shutdown();关闭Scheduler
} catch (SchedulerException | InterruptedException e) {
e.printStackTrace();
}
}
}
5.执行结果:
...
该程序会一直执行,也可以通过设置一定时间后结束执行。