Java 使用 Quartz 实现定时任务(超简单入门)

在日常开发中,我们经常会遇到一些"需要定时执行"的任务,比如:

  • 每天清理日志
  • 每小时同步一次数据
  • 每分钟监控某个指标

这时候,使用一个专业的任务调度框架可以大大简化我们的工作。

今天这篇文章,带你一步步使用 Java 中非常常见的调度框架 Quartz,实现一个简单的定时任务 ------ 每 5 秒输出一次控制台日志。

本文适合 Quartz 零基础或者入门阶段的开发者。


一、Quartz 是什么?

Quartz 是一个强大而灵活的任务调度库,它允许我们使用简单的方式创建定时任务,支持:

  • 固定频率执行(比如每 5 秒)
  • Cron 表达式调度(比如每天 3 点)
  • 持久化、分布式、高并发任务调度(进阶使用)

本文我们先用最基础的方式,跑起来一个任务,每隔 5 秒执行一次。


二、添加 Quartz 依赖(Maven)

如果你是使用 Maven 构建项目,只需在 pom.xml 中加入:

xml 复制代码
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version>
</dependency>

如果你使用其他构建工具,也可以去 mvnrepository.com 搜索对应的依赖方式。


三、创建一个 Job 类(任务的内容)

Quartz 的核心是 Job,它定义了任务执行时的逻辑。

我们新建一个 HelloJob.java

java 复制代码
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("执行定时任务:" + System.currentTimeMillis());
    }
}

四、调度任务并运行

接下来,在主类中写上调度逻辑:

java 复制代码
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzExample {
    public static void main(String[] args) throws SchedulerException {
        // 1. 创建调度器
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

        // 2. 定义任务 JobDetail
        JobDetail job = JobBuilder.newJob(HelloJob.class)
                .withIdentity("myJob", "group1")
                .build();

        // 3. 创建 Trigger(触发器)
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("myTrigger", "group1")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(5) // 每5秒执行一次
                        .repeatForever())
                .build();

        // 4. 安排任务
        scheduler.scheduleJob(job, trigger);

        // 5. 启动调度器
        scheduler.start();
    }
}

五、运行效果

运行主类后,你会在控制台看到类似输出:

复制代码
执行定时任务:1712743110657
执行定时任务:1712743115658
执行定时任务:1712743120659

实际运行结果: 说明:任务每隔 5 秒被触发执行一次。

六、总结 & 下一步

通过以上步骤,我们成功用 Quartz 实现了一个简单的定时任务。

如果你接下来想尝试更高级的使用方式,比如:

  • 使用 Cron 表达式定时(例如:每天 3 点执行)
  • 任务持久化到数据库
  • 与 Spring Boot 集成 Quartz

那就敬请关注后续内容,我也会继续分享更多实战经验。


如果这篇文章对你有帮助,欢迎点赞收藏,也可以在评论区留言讨论。

你也可以关注我,我会持续分享一些 Java / C# / 开发效率工具相关的干货内容。

你正在看的这篇文章,是我写给"普通打工人也能搞技术副业"的系列内容之一,如果你也在"下班后折腾点东西",欢迎一起交流!


相关推荐
CopyLower1 小时前
分布式ID生成方案的深度解析与Java实现
java·开发语言·分布式
m0_684598534 小时前
如何开发英语在线训练小程序:从0到1的详细步骤
java·微信小程序·小程序·小程序开发
ml130185288744 小时前
开发一个环保回收小程序需要哪些功能?环保回收小程序
java·大数据·微信小程序·小程序·开源软件
zybishe5 小时前
免费送源码:Java+ssm+MySQL 酒店预订管理系统的设计与实现 计算机毕业设计原创定制
java·大数据·python·mysql·微信小程序·php·课程设计
anlogic6 小时前
Java基础 4.12
java·开发语言
weisian1517 小时前
Java常用工具算法-7--秘钥托管云服务2(阿里云 KMS)
java·安全·阿里云
Alt.97 小时前
SpringMVC基础二(RestFul、接收数据、视图跳转)
java·开发语言·前端·mvc
寒页_7 小时前
2025年第十六届蓝桥杯省赛真题解析 Java B组(简单经验分享)
java·数据结构·经验分享·算法·蓝桥杯
Koma-forever7 小时前
java设计模式-适配器模式
java·设计模式·适配器模式
Yolo@~7 小时前
SpringBoot无法访问静态资源文件CSS、Js问题
java·spring boot·后端