首页 > 其他分享 >Quartz的简单使用:实现简单的定时任务

Quartz的简单使用:实现简单的定时任务

时间:2024-06-23 20:32:17浏览次数:3  
标签:Quartz 调度 Job quartz scheduler 简单 org 定时 public

在 Quartz 中,你可以定义和调度多个 Job。每个 Job 都有对应的 JobDetail 和 Trigger。

1. 添加依赖

确保你的项目中包含 Quartz 的依赖。例如,如果你使用的是 Maven,可以在 pom.xml 中添加以下依赖:

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version>
</dependency>

2. 创建 Job 类

首先,编写两个实现 Job 接口的类;每个类包含要执行的任务。

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class JobOne implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("Executing JobOne at " + System.currentTimeMillis());
    }
}

public class JobTwo implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("Executing JobTwo at " + System.currentTimeMillis());
    }
}

3. 配置调度器

创建一个调度器并配置两个 Job 及其各自的触发器。

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

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

        // 定义第一个作业和触发器
        JobDetail jobOne = JobBuilder.newJob(JobOne.class)
                .withIdentity("jobOne", "group1")
                .build();

        Trigger triggerOne = TriggerBuilder.newTrigger()
                .withIdentity("triggerOne", "group1")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(5) // 每5秒执行一次
                        .repeatForever())
                .build();

        // 定义第二个作业和触发器
        JobDetail jobTwo = JobBuilder.newJob(JobTwo.class)
                .withIdentity("jobTwo", "group2")
                .build();

        Trigger triggerTwo = TriggerBuilder.newTrigger()
                .withIdentity("triggerTwo", "group2")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(10) // 每10秒执行一次
                        .repeatForever())
                .build();

        // 将作业和触发器注册到调度器中
        scheduler.scheduleJob(jobOne, triggerOne);
        scheduler.scheduleJob(jobTwo, triggerTwo);

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

4. 启动应用

运行 QuartzScheduler 类中的 main 方法,Quartz 将根据配置的触发器执行 JobOneJobTwo

总结

以上示例展示了如何在 Quartz 中配置和调度两个独立的 Job。关键步骤包括:

  1. 定义 Job 类:每个 Job 类实现 Job 接口并定义具体的业务逻辑。

  2. 配置调度器:为每个 Job 创建 JobDetailTrigger,然后将它们注册到调度器中。

  3. 启动调度器:调用 scheduler.start() 方法启动调度器,使其开始根据触发器的配置执行 Job。

通过这种方式,你可以轻松地管理和调度多个任务。

标签:Quartz,调度,Job,quartz,scheduler,简单,org,定时,public
From: https://blog.csdn.net/wu137789/article/details/139859254

相关文章

  • 一个使用Python和假设的天气API来获取和展示天气数据的简单脚本示例
    要使用Python编写一个天气预测的脚本,我们通常需要依赖于现有的天气API来获取实时或历史天气数据,并且结合机器学习或统计模型来进行预测。然而,由于天气预测是一个复杂的任务,通常需要大量的计算资源和专业的气象知识,这里我们将简化这个过程,只展示如何使用Python和一个假设的天......
  • 简单塔防小游戏
      塔防,即炮塔防御(TowerDefence),也统称TD,指一类通过在地图上建造炮塔或类似建筑物,以阻止游戏中敌人进攻的策略型游戏,要有阵图。塔防受众很广,游戏模式简单而且可玩性极强,时至今日,塔防在游戏应用中依然是最热门的下载类型之一,比较经典的像《植物大战僵尸》。  本设计使用当前......
  • [算法篇] 简单讲讲一维前缀和与差分
    前缀和:先给定义:指某序列的前n项和是不是与我们高中所学的数列求和类似?给出用途: 如我们于一组长度为n的整数序列中询问m次,每次询问中输出区间[l,r]中数之和倘若我们先不使用前缀和,预测一下思路将会是:m次询问中,每一次都求和数组[l,r]时间复杂度为O(n),思路很简单但若m非常大则将......
  • API-定时器-间歇函数
    学习目标:掌握定时器-间歇函数学习内容:定时器-间歇函数案例定时器-间歇函数:网页中经常需要一种功能:每隔一段时间需要`自动`执行一段代码,不需要我们手动去触发。例如:网页中的倒计时。要实现这种需求,需要定时器函数。定时器函数有两种,我们先讲间歇函数。开启定时......
  • 基于Spring Boot的MyBatis整合示例:构建简单的用户管理系统
    目录1.创建一个新的SpringBoot项目2.添加必要的依赖3.配置数据库连接4.创建实体类5.创建Mapper接口6.创建MapperXML文件7.创建Service类8.创建Controller类9.启动应用程序10.测试在当今的软件开发中,SpringBoot和MyBatis作为两个流行的Java框架,常常被......
  • 简单讲一下Mobile Aloha模拟环境代码
    MobileAloha模拟环境有两部分代码:1. https://github.com/tonyzhaozh/act  ---里面有ACT论文的链接2. https://github.com/MarkFzp/act-plus-plus  ---这个是我们要介绍的代码ACT算法全称是 ActionChunkingwithTransformers,大体意思是:用机械臂的n个帧的视频......
  • 构建本地智能知识问答系统:基于Langchain和ChatGLM的简单实践
    在数字化时代,智能知识问答系统成为了提升企业效率和数据安全性的关键工具。本文将介绍如何基于Langchain和ChatGLM构建一个本地化、支持中文的智能知识问答系统。该系统不仅能够实现完全本地化推理,而且对开源模型友好,可满足企业对数据隐私和私域化部署的需求。项目概览本项目利......
  • 数据导出简单处理:Java中导出excel数据!!!
    达成的功能:查询出数据集合List,把集合内容导出成excel文件数据。直接上代码:1、pom.xml<!--阿里excel--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId>......
  • 搭建一个纪念相册!ui超级好看也特别简单
    本篇文章是基于雨云服务器进行搭建的为什么选择雨云服务器而不是家用电脑呢?因为相较于家用电脑,使用服务器的成本更低并且更稳定如果你还没有注册雨云账号,可以通过以下链接进行注册,或者注册时填写优惠码mianfei,注册后有五折优惠,还有免费服务器使用注册链接:雨云-新一代云服......
  • js/ts prototype最简单且深刻的理角
    最关健的二点:1.js任何对象(函数也是对象)都有__proto__私有属性,有的可能会显示[[Prototype]](chorme浏览器),代码直接访问属性会报错,但可以正常运行的。__proto__只是另一个对象的引用(一般是类型对象,也可以修改)。2.只有函数对象Function才有.prototype属性,它本身就是一个对象,给......