java - 使用 java.util.timer 与 Quartz 进行调度的优缺点?

标签 java timer scheduled-tasks scheduling quartz-scheduler

<分区>

我必须编写一个应用来执行一系列任务:

  1. 任务在每天 0200 时运行一次。
  2. 任务在每天 0400 时运行一次
  3. 任务从 0003 时开始以 15 分钟为间隔运行
  4. 任务从 0005 时开始以 15 分钟为间隔运行

使用普通 java.util.timer 与使用普通 java.util.timer 的优缺点是什么? quartz ?

我应该考虑其他替代方案吗?

最佳答案

quartz

  • 额外的依赖
  • API 当前(2011 年底)发生变化:1.x 即将退出市场,但它是 Spring 和其他可能支持的唯一一个
  • 作业可以持久存储;多个调度器可以集群用于负载平衡和故障转移
  • Job 和 Trigger 之间的区别需要一点时间来适应 - 但这是可能的
  • 更强大的重复调度表达式(例如 cron 表达式的 CronTrigger)

计时器

  • 开箱即用 JSE 1.3+
  • 对于你的功能来说可能就足够了
  • 不太灵活,但也不那么复杂

我个人将 Quartz + 持久存储用于 Web 应用程序,其中触发器可以交互式创建并且应该在重启后仍然存在,使用 Spring's scheduling abstraction .恕我直言,这两个 API 都缺少一个重要的概念:在一段时间后重试失败的任务。为我自己添加这个对于也应该重试的重复任务来说是一种痛苦。

关于java - 使用 java.util.timer 与 Quartz 进行调度的优缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8078130/

相关文章:

java - 为什么 Spring 应用程序在 main 方法的末尾不存在

Java 同步线程未按预期工作

java - 如何修复 'android.os.NetworkOnMainThreadException' ?

delphi - 如何防止计时器和套接字事件同时更改列表?

c# - 如何从不同类中的计时器事件处理程序更新标签文本?

c# - 不使用 CRON 字符串安排设置字符串

java - 如何使用java Stream检查集合是否为空

java - HP 服务测试 - 调用 Java 类服务 - 有类路径问题

c# - Windows 窗体在显示消息前等待 5 秒

c# - Task.Run() 和 Task.Delay() 一段时间后终止