java 定时器 Quartz 用法之一 程序直接启动
时间: 2024-05-07 15:21:42 浏览: 19
Quartz 是一个开源的作业调度框架,可以用来实现定时任务。关于Quartz的使用,可以分为以下几个方面:
1. 引入 Quartz 依赖
在 Maven 项目中,可以在 pom.xml 文件中加入以下依赖:
```xml
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
```
2. 编写 Job 类
Job 类是一个实现了 org.quartz.Job 接口的类,它代表了一个需要定时执行的任务。在 Job 类中,需要实现 execute 方法,该方法就是定时执行的任务。
```java
public class MyJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("定时任务执行了:" + new Date());
}
}
```
3. 创建调度器
Quartz 的调度器用来触发 Job 类的 execute 方法。可以通过 StdSchedulerFactory 类来创建调度器。
```java
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
```
4. 创建 JobDetail 对象
JobDetail 对象代表了一个需要定时执行的任务,包含了任务的名称、所属组、执行类等信息。
```java
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
.withIdentity("job1", "group1")
.build();
```
5. 创建 Trigger 对象
Trigger 对象用来定义任务的触发条件,例如每隔多长时间执行一次、在什么时间执行等。
```java
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10)
.repeatForever())
.build();
```
6. 将 JobDetail 和 Trigger 加入调度器
```java
scheduler.scheduleJob(jobDetail, trigger);
```
7. 启动调度器
```java
scheduler.start();
```
完整代码示例:
```java
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import java.util.Date;
public class QuartzTest {
public static void main(String[] args) throws Exception {
// 创建调度器
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 创建 JobDetail 对象
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
.withIdentity("job1", "group1")
.build();
// 创建 Trigger 对象
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10)
.repeatForever())
.build();
// 将 JobDetail 和 Trigger 加入调度器
scheduler.scheduleJob(jobDetail, trigger);
// 启动调度器
scheduler.start();
}
public static class MyJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("定时任务执行了:" + new Date());
}
}
}
```
这样,就可以实现一个简单的定时任务了。程序启动后,每隔10秒钟就会执行一次 MyJob 类中的 execute 方法。