一、Quartz入门案例及文档

【Quartz】Quartz定时任务框架 Quartz是一个框架,是SpringBoot御用的定时任务框架,有三大核心部分组成,分别是JobTriggerScheduler。Job:任务,可以理解成你要做什么事,具体要执行的业务逻辑,比如:发送短信、同步数据、发送邮件等。Trigger:触发器,可以理解成你什么时候去做,用来定义Job触发条件、触发时间、触发间隔、终止时间等。Scheduler:调度器,可以理解成你什么时候要去做什么事,它会启动Trigger去执行Job。/*** @author : 黎剑。 阅读详情

入门案例及文档

更多文档参考

官方文档 (quartz-scheduler.org)
官方配置文件文档

引入依赖坐标

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

任务调度管理类

package com.strap.mydemo.components;

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

import java.util.Date;
import java.util.List;

/**
 * <p>任务调度管理</p>
 *
 * @author strap
 */
public class QuartzManager {

    private static volatile Scheduler scheduler = null;

    public QuartzManager() {
    }

    public static Scheduler getScheduler() {
        if (scheduler == null) {
            synchronized (QuartzManager.class) {
                if (scheduler == null) {
                    try {
                        scheduler = new StdSchedulerFactory().getScheduler();
                    } catch (SchedulerException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return scheduler;
    }

    /**
     * 启动一个调度对象
     */
    public void start() throws SchedulerException {
        getScheduler().start();
    }

    /**
     * 检查调度是否启动
     */
    public boolean isStarted() throws SchedulerException {
        return getScheduler().isStarted();
    }

    /**
     * 关闭调度信息
     */
    public void shutdown() throws SchedulerException {
        getScheduler().shutdown();
    }

    /**
     * 添加调度的job信息
     */
    public Date scheduleJob(JobDetail jobdetail, Trigger trigger)
            throws SchedulerException {
        return getScheduler().scheduleJob(jobdetail, trigger);
    }

    /**
     * 添加相关的触发器
     */
    public Date scheduleJob(Trigger trigger) throws SchedulerException {
        return getScheduler().scheduleJob(trigger);
    }

    /**
     * 停止调度Job任务
     */
    public boolean unscheduleJob(TriggerKey triggerkey)
            throws SchedulerException {
        return getScheduler().unscheduleJob(triggerkey);
    }

    /**
     * 停止调度多个触发器相关的job
     */
    public boolean unscheduleJobs(List<TriggerKey> triggerKeylist) throws SchedulerException {
        return getScheduler().unscheduleJobs(triggerKeylist);
    }

    /**
     * 重新恢复触发器相关的job任务
     */
    public Date rescheduleJob(TriggerKey triggerkey, Trigger trigger)
            throws SchedulerException {
        return getScheduler().rescheduleJob(triggerkey, trigger);
    }

    /**
     * 添加相关的job任务
     */
    public void addJob(JobDetail jobdetail, boolean flag)
            throws SchedulerException {
        getScheduler().addJob(jobdetail, flag);
    }

    /**
     * 删除相关的job任务
     */
    public boolean deleteJob(JobKey jobkey) throws SchedulerException {
        return getScheduler().deleteJob(jobkey);
    }

    /**
     * 删除相关的多个job任务
     */
    public boolean deleteJobs(List<JobKey> jobKeys)
            throws SchedulerException {
        return getScheduler().deleteJobs(jobKeys);
    }

    /**
     * 触发job
     */
    public void triggerJob(JobKey jobkey) throws SchedulerException {
        getScheduler().triggerJob(jobkey);
    }

    /**
     * 带参数数据job
     */
    public void triggerJob(JobKey jobkey, JobDataMap jobdatamap)
            throws SchedulerException {
        getScheduler().triggerJob(jobkey, jobdatamap);
    }

    /**
     * 停止一个job任务
     */
    public void pauseJob(JobKey jobkey) throws SchedulerException {
        getScheduler().pauseJob(jobkey);
    }

    /**
     * 停止多个job任务
     */
    public void pauseJobs(GroupMatcher<JobKey> groupmatcher)
            throws SchedulerException {
        getScheduler().pauseJobs(groupmatcher);
    }

    /**
     * 停止使用相关的触发器
     */
    public void pauseTrigger(TriggerKey triggerkey)
            throws SchedulerException {
        getScheduler().pauseTrigger(triggerkey);
    }

    public void pauseTriggers(GroupMatcher<TriggerKey> groupmatcher)
            throws SchedulerException {
        getScheduler().pauseTriggers(groupmatcher);
    }

    /**
     * 恢复相关的job任务
     */
    public void resumeJob(JobKey jobkey) throws SchedulerException {
        getScheduler().resumeJob(jobkey);
    }

    public void resumeJobs(GroupMatcher<JobKey> matcher)
            throws SchedulerException {
        getScheduler().resumeJobs(matcher);
    }

    public void resumeTrigger(TriggerKey triggerkey)
            throws SchedulerException {
        getScheduler().resumeTrigger(triggerkey);
    }

    public void resumeTriggers(GroupMatcher<TriggerKey> groupmatcher)
            throws SchedulerException {
        getScheduler().resumeTriggers(groupmatcher);
    }

    /**
     * 暂停调度中所有的job任务
     */
    public void pauseAll() throws SchedulerException {
        getScheduler().pauseAll();
    }

    /**
     * 恢复调度中所有的job的任务
     */
    public void resumeAll() throws SchedulerException {
        getScheduler().resumeAll();
    }


}

测试JOB编写

继承job接口

package com.strap.mydemo.components;

import lombok.extern.log4j.Log4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

/**
 * <p></p>
 *
 * @author strap
 */
@Log4j
public class MyQuartzJob implements Job {

    public MyQuartzJob() {
    }

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        log.info("MyQuartzJob 开始执行");
        log.info(jobExecutionContext.getMergedJobDataMap());
    }
}

SimpleTrigger

用于简单的触发以及重复执行作业任务

        Scheduler scheduler = QuartzManager.getScheduler();
        JobDetail job = JobBuilder
                .newJob(MyQuartzJob.class)
                .withIdentity("simpleJob", "simpleJobGroup")
                .build();
        SimpleTrigger simpleTrigger = TriggerBuilder.newTrigger()
                .withIdentity("simpleTrigger", "simpleTriggerGroup") // 标识符
                .startAt(DateUtil.offsetSecond(new Date(), 3)) // 3秒后触发
                .withSchedule(
                        //每两秒执行一次
                        SimpleScheduleBuilder.repeatSecondlyForever(2)
                ) 
                .build();
        scheduler.scheduleJob(job, simpleTrigger);
        scheduler.start();

        //阻塞主线程,看任务执行效果
        Thread.sleep(8000);
        scheduler.shutdown(true);

CronTrigger

使用cron表达式来进行计划作业任务设定的触发器

        Scheduler scheduler = QuartzManager.getScheduler();
        JobDetail cronJob = JobBuilder
                .newJob(MyQuartzJob.class)
                .withIdentity("cronJob", "cronJobGroup") // 标识符
                .build();
        CronTrigger cronTrigger = TriggerBuilder
                .newTrigger()
                .withIdentity("cronTrigger", "cronTriggerGroup") // 标志符
                .withSchedule(
                        // 每三秒执行
                        CronScheduleBuilder.cronSchedule("*/3 * * * * ?")
                )
                .build();
        scheduler.scheduleJob(cronJob, cronTrigger);
        scheduler.start();

        //阻塞主线程,看任务执行效果
        Thread.sleep(10000);
        scheduler.shutdown(true);
Quartz中文文档使用 Quartz中文文档 阅读详情

相关推荐

Quartz定时任务框架(一) 入门案例

介绍 Quartz是一套支持时间调度的框架,官网http://www.quartz-scheduler.org/, jar 包下载,点这里 入门案例 1. quartz.properties文件 这个文件不是必须创建的,如果需要创建使用,必须创建在calsspath下面,对于web工程,编译后放到WEB-INF/classes下面 #定义scheduler的名称 org.qua...

z1340954953 989

Quartz使用文档,使用Quartz实现动态任务,Spring集成Quartz,Quartz集群部署,Quartz源码分析

官网:http://www.quartz-scheduler.org/源码地址:https://github.com/quartz-scheduler/quartzQuartz 的意思是石英,像石英表一样精确。Quatz 是一个特性丰富的,开源的任务调度库,它几乎可以嵌入所有的 Java 程序,从很小的独立应用程序到大型商业系统。Quartz 可以用来创建成百上千的简单的或者复杂的任务,这些任务可以用来执行任何程序可以做的事情。Quartz 拥有很多企业级的特性,包括支持 JTA 事务和集群。

秃了也弱了 3288

Quartz完全开发手册(一篇学会Quartz所有知识点)

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz是开源且具有丰富特性的"任务调度库",能够集成于任何的java应用,小到独立的应用,大至电子商业系统。Quartz能够创建亦简单亦复杂的调度,以执行上十、上百,甚至上万的任务。任务job被定义为标准的java组件,能够执行任何你想要实现的功能。quartz调度框架包含许多企业级的特性,如JTA事务、集群的支持。

hao_kkkkk的专栏 2191

Quartz使用大全 (翻译自官方文档)

http://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/tutorial-lesson-01.html 1.使用Quartz Quartz Scheduler一旦关闭,无法重启 需要重新实例化 提供了暂停状态 SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); Scheduler sched = schedFact.getS

黄金时代的架构之路 2346

Quartz官方文档汉化教程

Quartz官方文档汉化教程.描述的很详细,相信对您有帮助

【零基础】手把手教你使用Docker部署Springboot项目(详细版)

还不会使用Docker部署Springboot项目的小伙伴,不妨进来看看呗,希望文中内容对你有所帮助!

fengprogrammer的博客 2万+

Quartz 快速入门案例,看这一篇就够了

Quartz 是基于 Java 实现的任务调度框架,对任务的创建、修改、删除、触发以及监控这些操作直接提供了 api,这意味着开发人员拥有最大的操作权,也带来了更高的灵活性。

~~~~~~~BUG FLY~~~~~~~~~ 1万+

Ubuntu20.04安装NVIDIA显卡驱动避坑指南:从.run文件到完美运行

本文详细介绍了在Ubuntu20.04系统上通过.run文件安装NVIDIA显卡驱动的完整流程和避坑技巧。从禁用Nouveau驱动、选择合适显示管理器到处理常见安装问题,提供了一套经过验证的解决方案,帮助用户顺利完成驱动安装并优化性能。

weixin_30776273的博客 604

Quartz快速入门案例

Quartz任务调度 一.Quartz概念 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。 quartz是开源且具有丰富特性的"任务调度库",能够集成于任何的java应用,小到独立的应用,大至电子商业系统。quartz能够创建亦简单亦复杂的调度,以执行上十、上百,甚至上万的任务。任务job被定义为标准的java组件,能够执行任何你想要实现的功能。quartz调度框架包含许多企业级的特性,如JTA事务、集

希冀 997

WhatsApp协议算法

我想其实有很多人还不太了WhatsApp群控,简单来说,它和我们常使用的微信聊天软件是类似的,只不过它是基于通讯录的,操作起来比较简单便捷,所以现在有很多国家都喜欢用WhatsApp。一般情况下,筛号不会造成账号被封的情况,但是呢,如果筛号的频率太快,就会被系统限制筛号能力,不再返回筛号结果,所以,筛号数量和速度一定要控制好。前天逛街突然灵光一现,为什么不试试多路访问呢,简单来说就是信道复用技术,马上跑回家,调取接口,接入通道,导入已经转换成协议的账号,成功登录!

2403_87755661的博客 1943

Design Compiler时序约束实战:如何用set_clock_uncertainty解决时钟抖动问题?

本文深入探讨了在Design Compiler时序约束实战中,如何精准运用set_clock_uncertainty命令解决时钟抖动等非理想性问题。文章详细解析了该命令在时钟树综合前后的不同应用策略、建立时间与保持时间的差异化设置,并对比了其与set_clock_jitter的适用场景,旨在帮助数字IC设计工程师制定稳健的时序约束,为后端物理实现预留合理的安全裕量,从而高效达成时序收敛。

weixin_29196891的博客 300

Quartz(二)入门案例

https://www.mvnrepository.com maven查找相关配置 Maven配置 <!-- 核心包 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <...

weixin_44134471的博客 308

高熵合金AlCoCrFeNi/金刚石摩擦案例代码

本文介绍金刚石与高熵合金AlCoCrFeNi摩擦的案例。 在之前的文章中,介绍过使用fix indent命令实现虚拟球的摩擦,本文介绍使用金刚石实体球实现高熵合金摩擦的方法。 主要的模拟过程如下: (1)基体建模 建使用原子替换法获得高熵合金初始模型,升温到3000K驰豫后,冷却至300K,获得平衡组织。 (2)摩擦球建模 在高熵合金平衡组织的模型中添加金刚石摩擦球,使用change_box命令扩大box尺寸,添加金刚石摩擦球,并设置混合力场。 (3)摩擦过程 摩擦球下压一定深度后,沿y方向进行摩擦,摩擦

lammps_jiayou的博客 2900

C# -- Quartz.Net入门案例

1. 入门案例 using Quartz;using Quartz.Impl; public class PrintTime : IJob { public Task Execute(IJobExecutionContext context) { return Task.Factory.StartNew(new ...

weixin_30649859的博客 127

2025_NIPS_Truthful Aggregation of LLMs with an Application to Online Advertising

大型语言模型(LLMs)生成内容的 revenue 变现是在线广告的下一个前沿领域。我们考虑这样一种场景:广告商旨在影响LLM的回复,而平台则寻求最大化广告商价值并确保用户满意度。核心挑战在于,广告商的偏好通常与用户偏好存在冲突,且广告商可能误报其偏好。为解决这一问题,我们提出MOSAIC——一种拍卖机制,它确保真实申报是广告商的占优策略,并使每个广告商的效用与其对社会福利的贡献保持一致。重要的是,该机制无需LLM微调或访问模型权重,且随着计算资源的增加,可证明收敛到最优微调LLM的输出。

c_cpp_csharp的专栏 82

物理AI重构自动驾驶供应链 | 传统Tier1盈利模式崩塌,纯算法/软硬一体双路线落地对比,助力智驾软件商业化与全场景模型迭代

2026年是自动驾驶物理AI规模化落地元年,行业彻底告别传统感知-预测-规划-控制的模块化分层开发范式,迈入以世界模型、物理规则推演、端到端动作生成为核心的全新技术阶段。不同于传统AI仅完成图像识别、目标检测的浅层感知任务,物理AI能够深度理解道路交通中的动力学约束、路面摩擦、车辆博弈、行人运动规律等真实物理逻辑,实现对复杂路况的时序推演与自主决策,从底层重构自动驾驶技术架构。技术迭代同步引发产业链颠覆性变革,沿用数十年的传统自动驾驶Tier1商业模式全面崩塌。

getusushu的博客 289

【Quartz】Quartz概述及入门实例

Quartz 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。此外,Quartz提供了调度运行环境的持久化机制,可以保存并恢复调度现场,即使系统因故障关闭,任务调度现场数据并不会丢失。此外,Quartz还提供了组件式的侦听器、各种插件、线程池等功能。

Evankaka的专栏 7674

EZ-INSAR工具箱(使用历史问题)

把 rasterio 升到 1.3+(或退回 py39)→features能 import → 脚本能跑 → 出图 → MATLAB 不再报错!

2301_79258000的博客 121

Quartz框架快速入门

创建一个quartz包,创建自定义的Job任务类使用@Scheduled 定义某个定时作业(或工作)@Component@Slf4j”)log.info(“任务正执行:” + System.currentTimeMillis());这就是敏捷式开发,就是这么开心。Quartz是一个开源的任务调度框架。作用是基于定时、定期的策略来执行任务。它是OpenSymphony开源组织在Job scheduling领域又一个开源项目。“任务进度管理器”就是一个。

llg3189609554的博客 1600

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

quartz入门案例详解

本入门案例基于spring和quartz整合完成。 第一步:创建maven工程,导入spring和quartz相关依赖 第二步:创建任务类 第三步:在spring配置文件中配置任务类 第四步:在spring配置文件中配置JobDetail 第五步:在spring配置文件中配置触发器 第六步:在spring配置文件中配置scheduler 第七步:加载spring配置文件,创建spring工厂 核...

woaini886353的博客 326

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Quartz - Quartz简单入门

一、相关介绍      Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由Java开发的一个开源的任务日程管理系统 二、概念和类     Job:要执行的作业类所实现的接口     JobDetail:定义作业实例的详细信息属性     Trigger:触发器接口,Quartz中提供了SimpleTrigger、CronTirgg

袭冷 604

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Quartz入门案例

Quartz 概述 Quartz 是 OpenSymphony 开源组织在 Job Scheduling 领域又一个开源项目,它可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。Quartz 可以用来创建简单或为运行十个,百个,甚至是好几万个 Jobs 这样复杂的程序。Jobs 可以做成标准的 Java 组件或 EJBs。 为什么使用 Quartz? Quartz 是一个任务调度框架。...

__AIR__ 513

Quartz入门

目录Quartz简介环境搭建入门案例表达式触发器玩法一(几秒执行一次)玩法二(固定时间点执行一次)Spring task Vs Quartz验证线程问题SpringTask线程Quartz线程 Quartz简介 任务调度框架“Quartz”是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,   &nbsp...

only老K的博客 qq:1025271924 504

Quartz介绍及入门案例

Quartz介绍及入门案例 1. Quartz 任务调度框架 概述 在实际项目开发中,除了Web应用、SOA服务外,还有一类不可缺少的,那就是定时任务调度。定时任务的场景可以说非常广泛: 某些网站会定时发送优惠邮件。 银行系统还款日信用卡催收款。 某些应用的生日祝福短信等。 完成这些功能都需要用到定时任务调度。那究竟何为定时任务调度,一句话概括就是:基于给定的时间点、给定的时间间隔、给定的执行次数自动执行的任务 JDK的Timer (定时任务只能执行一次,) , Quartz 、 Sprin

weixin_42914989的博客 421

Quartz学习笔记(一)快速入门

Quartz学习笔记(一)快速入门什么是QuartzQuartz 核心概念Quartz的运行环境快速入门Quartz APIScheduler的生命期builder类 最近在工作中用到了Quartz,趁此机会学习了一下,顺便写些笔记记录一下。 参照Quartz官方文档 什么是Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目。 它完全由 J...

qq_38846242的博客 1731
上一篇: 冒泡、快速、选择、插入算法
下一篇: 二、Quartz基础概念及常用cron
strap
博客等级 码龄3年 60粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值