首先写一个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.执行结果:
...
下面学习Quartz中比较常用到的组件:
1.Job表示一个工作,要执行的具体内容。此接口中只有一个方法,就是execute()。
2.JobDetail表示一个具体的可执行的调度程序,Job是这个可执行调度程序所要执行的内容。另外JobDetail还包含这个任务调度的方案和策略。
3.Trigger是一个调度参数的设置,什么时候去调以及多久调一次。
4.Scheduler是一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger.当JobDetail和Trigger组合,就可以被Scheduler调度了。
Quartz的运行环境
- Quartz 可以运行嵌入在另一个独立式应用程序。
- Quartz 可以在应用程序服务器(或 servlet 容器)内被实例化,并且参与 XA 事务。
- Quartz 可以作为一个独立的程序运行(其自己的 Java 虚拟机内),可以通过 RMI 使用。
- Quartz 可以被实例化,作为独立的项目集群(负载平衡和故障转移功能),用于作业的执行。
来源:https://www.cnblogs.com/aliceQin/p/12294533.html