Java Cron 表达式2025年03月17日 | 阅读 9 分钟 技术日新月异。有时,我们需要在服务器上定期执行一个任务。在服务器上手动运行任务是一项艰巨的任务,用户或管理员无法多次完成。为了解决这个问题,Cron 帮助程序员在服务器上定期执行一个任务。它广泛用于自动化系统维护和管理。此外,我们还可以在 Web 开发中使用Cron 表达式。在许多情况下,Web 应用程序可能需要定期执行某些任务。 在本节中,我们将讨论Java Cron 表达式、它的工作原理以及通过Java Quartz 调度器的实现。 什么是 Cron?基本上,Cron 是一个调度任务的实用程序。它允许用户在指定的时间、日期、月份、星期和年份定期调度任务。它广泛用于不需要人工干预的自动化流程。 ![]() Cron 表达式在 Java 中,Cron 表达式用于配置 CronTrigger 类的实例。它是 org.quartz.Trigger 类的一个子类。Cron 表达式是一个由六个或七个字段(时间单位)组成的字符串或表达式。它描述了计划和命令的各个详细信息。 Cron 表达式可以简单也可以复杂。例如, 简单: * * * * ? *(星号表示字段) 复杂: 0 0/4 12,15,3-35,52 ? May,June,july TUE-SAT 2002-2010。 另外,请注意,Cron 表达式可以用不同的样式编写,如下所示。例如,以下三个 Cron 表达式具有相同的含义。
这三个表达式都每天早上 9:10 执行。 Cron 表达式中使用的字段在 Cron 表达式中,时间单位称为字段。它们由空格分隔,可以包含任何允许的值,以及该字段允许的字符的各种组合。它按预期顺序显示字段。下表描述了时间单位和对应的允许值以及可与表达式一起使用的符号。
Cron 表达式中使用的特殊符号和字母星号(*): 当我们希望在每个时间单位(分钟、秒、小时)执行事件时使用该符号。例如,如果 * 与分钟时间单位一起使用,则表示事件将自动每分钟执行一次。 问号(?): 该符号用于月份中的天和星期中的天等字段。它表示任意值并忽略字段值。假设我们想在每个月的第二天执行一个脚本,而不关心当月第二天是星期几。在这种情况下,我们应该在星期中的天字段中指定一个问号(?)。 连字符(-): 该符号用于指定范围。它确定值的范围。例如,如果小时字段定义为<4-5>,则表示事件将在第 4 小时和第 5 小时执行。 逗号(,): 它用于定义由逗号分隔的字段值。例如,Fri, Sat, Sun 等。 正斜杠(/): 它用于增加指定时间单位的值。假设我们想在 10 分钟时开始一个事件,之后我们需要在 20 分钟时执行同一个事件,然后是 30 分钟,依此类推。在这种情况下,我们指定开始时间和增量值,用正斜杠分隔。 例如,如果在分钟字段中指定了10/10,则表示第一个事件在 10 分钟时执行,下一个执行将在一个小时的 20 分钟时执行,依此类推。 L (Last): L 的用法在不同字段中有不同的含义。
W: 后者代表工作日(周一至周五)。它确定最接近月份指定日期的星期几。 例如,如果我们指定月份中的天为5W,则表示 W 确定最接近本月第 5 天的星期几。
可能还存在另一种情况。假设本月 1 号是星期六,事件将在本月 3 号发生。这意味着事件或脚本不会在上个月执行。 Hash (#): 它表示该月星期几的第 n 次出现。例如,该月的第三个星期五可以表示为6#3。 为什么我们应该使用 Cron 表达式?使用 Cron 表达式有多种原因。其中一些是
Cron 表达式示例让我们看一些使用特殊符号和字段的常见 Cron 表达式。
Cron 表达式中的特殊设置除了上述特殊符号外,Cron 表达式还支持一些预定义的特殊值。这些值可以代替字段使用。
在 Java 中使用 Cron 表达式Java 提供了一个开源作业调度系统,用于在特定时间单位调度作业。我们可以从官方网站下载 Quartz 调度器。 从编程角度来看,作业是一个包含要执行的任务的类。但问题是如何调度它。要调度作业,我们定义一个触发器并指定作业何时执行。 如果我们要实现 Quartz 调度器,可以添加依赖项,如下所示 注意:在执行以下 Java 程序之前,请确保已将 quartz-2.2.1.jar 文件添加到路径中,否则会报错。让我们通过一个 Java 程序来看看 Cron 表达式和作业的实现。 步骤 1:创建一个 Maven 项目。我们将其命名为CronExample。 步骤 2:在项目内,创建两个名为com.javatpoint.app 和com.javatpoint.job 的包。在第一个包中,我们将定义主类;在第二个包中,我们将定义作业(在本例中,有五个作业)。 步骤 3:在 pom.xml 文件中,粘贴以下依赖项。它会自动下载项目所需的 JAR 文件。pom 文件如下所示。 步骤 4:创建五个您想要执行的作业(在 com.javatpoint.job 包中)。在本例中,我们定义了以下五个作业。 Job1.java Job2.java Job3.java Job4.java Job5.java 步骤 5:创建一个名为 MyApp 的主类。 MyApp.java 完成以上所有步骤后,项目目录如下所示。 ![]() 步骤 6:运行上述 Java 程序以查看输出。 ![]() 我们观察到每个作业都在特定的时间间隔执行。 |
? Java Calendar 类 (java.util.Calendar) 是一个非常有用的实用类,用于在 Java 中操作日期和时间。在这里,我将向您展示如何使用 Calendar 类更改日期和时间。使用 Calendar() 类方法获取今天的日期和时间。DateFormat dF = new...
阅读 4 分钟
ORM 代表对象关系映射。它是一种位于 Web 应用程序和数据库之间的中间件应用程序或工具。它在 API 中封装了存储驱动程序的特定实现细节。什么是 ORM?ORM 是一种将 Java 对象和关系之间的数据转换的技术...
阅读 3 分钟
问题陈述在数组中找到一个索引,该索引处的值出现次数超过数组索引的一半是当前任务。这个数字通常被称为数组的多数元素。出现次数超过n/2次的元素...
5 分钟阅读
在本节中,我们将学习什么是均衡数字,并创建 Java 程序来查找均衡数字。它经常出现在 Java 编码面试和学术讨论中。均衡数字:一个自然数,其数字个数与其中存在的数字个数相同...
阅读 4 分钟
在本节中,我们将学习如何使用星号或其他特殊字符编写 Lord 的代码。这是 Java 中最难编写的模式程序之一。我们将使用“for”循环来打印 Lord… …
阅读 2 分钟
顾名思义,常量是编程中一个不变的实体。换句话说,它的值不能被改变。通常,为了实现这一点,变量会使用 final 关键字声明。常量经常用于表示稳定的值,例如数学...
阅读 6 分钟
java.nio.charset 的内置方法之一是 reset() 方法。除了清除可能存在的任何内部状态外,CharsetEncoder 还会重置此编码器。此外,它还会重启与字符集无关的状态,并调用 implReset 函数来执行任何特定于...的重置操作。
阅读 2 分钟
在本节中,我们将讨论如何在 Java 中将矩阵旋转 180 度。在这个问题中,给出了一个方形矩阵,我们需要将其旋转 1800 度。示例 1:输入:4 6 7 8 9 3 2 1 9 0 4 5 8 0 3 2 输出:2 3...
阅读 10 分钟
要从 Java 中的 PDF 中提取内容,有许多可用的库,例如 Apache PDFBox。Apache PDFBox 是用于对 PDF 执行各种操作的最佳库之一,例如 PDF 到文本提取、PDF...
阅读 6 分钟
在 Java 中,set 是 java.util 包中的一个接口。Set 接口扩展了 Collection 接口。一个无序的集合或列表,其中不允许重复,被称为 Collection 接口。Set 接口用于创建...
阅读 15 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India