什么是Quartz ?
Quartz是一个功能丰富开源作业调度库,可以集成到几乎任何Java应用程序中 - 从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建执行数十,数百甚至数十万个作业的简单或复杂的计划; 任务定义为标准Java组件的任务,可以执行任何可以对其进行编程的任何内容。Quartz Scheduler包含许多企业级功能,例如支持JTA事务和集群。
Quartz 接口
- Scheduler - 调度器,与调度程序进行交互的主要API。
- Job - 你希望由调度程序执行的组件实现的接口。
- JobDetail - 用于定义作业的实例,一个具体的类。
- Trigger -定义给定执行计划作业的组件,通常用于定义作业何时执行。
- JobBuilder - 用于定义/构建JobDetail实例,定义Job的实例.
- TriggerBuilder - 用于定义/构建触发器实例.
scheduler 负责管理trigger 调度job
Quartz 例子
1.首先根据项目要求导入quartz包,项目采用maven构造,
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
2.建立 quartz.properties 文件
设置可运行线程数量
org.quartz.threadPool.threadCount = 2
3.创建HelloWorldJob 类 实现Job接口,实现execute方法,
public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Job HelloWorld!"); }
4. 创建测试类 QuartzTest.java
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); //创建任务 JobDetail job = JobBuilder.newJob(HelloWorldJob.class).withIdentity("myJob", "group").build(); //创建任务触发器 设置任务条件:立刻开始任务,每两秒执行一次,永远执行 Trigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger", "group").startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()) .build(); //绑定 scheduler.scheduleJob(job, trigger); //开始启动任务 scheduler.start(); //休眠10s Thread.sleep(10000); //结束任务 scheduler.shutdown();
5.项目运行结果
项目源代码:https://github.com/yldzxz/test-quartz.git