Quartz是一个功能丰富,开源的JAVA作业调度库。
官方网站:http://www.quartz-scheduler.org/
下载Quartz
我们用的是Quartz2.2.1,解压缩包后发现有jar包:
C3p0(线程池相关jar包)
Log4j(日志记录相关jar包)
Quartz
Quartz-jobs
Slf4j-api, Slf4j-log4j(日志记录相关jar包)
Log4j的日志配置相当棒,还在用system.out.println调试的同学赶快要搜索学习一下啦。
配置Quartz
简单在自己工程目录下建立quartz.properties文件。
org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
更多配置可以自己看文档或参考examples文件夹里面的例子。
简单而言:第一行意思是调度的名称是MyScheduler
第二行:线程池里最大线程数。
第三行:是quartz数据的存放设置。
开始一个简单的程序
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.JobBuilder.*;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.SimpleScheduleBuilder.*;
public class QuartzTest {
public static void main(String[] args) {
try {
// Grab the Scheduler instance from the Factory
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// and start it off
scheduler.start();
scheduler.shutdown();
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
这段代码应该都看得懂吧,然后把你想运行的东西放到start和off之间即可。
// define the job and tie it to our HelloJob class
JobDetail job = newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();
// Trigger the job to run now, and then repeat every 40 seconds
Trigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(40)
.repeatForever())
.build();
// Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(job, trigger);