【问题标题】:How does the quartz scheduler work? [closed]石英调度器是如何工作的? [关闭]
【发布时间】:2012-10-16 06:13:03
【问题描述】:

我的问题是:quartz 调度器是如何工作的,它与实现 Runnable 接口(基本上是一个线程)的普通类有什么不同,后者根据指定的时间间隔唤醒并执行所需的工作?

这只是一种方便的做事方式(使用石英调度程序),例如通过 XML 文件指定作业配置以及向现有调度程序轻松添加新作业,还是还有其他功能?更重要的是,我的意思是它是否进行了任何类型的优化,例如它不会在整个持续时间内挂在线程上并释放它?它是一种轮询机制,线程不断轮询系统时间并查看指定的时间间隔是否已过,还是它与系统时钟进行某种注册,时钟本身通知石英调度程序?

如果需要对上述问题进一步澄清,请告诉我。

【问题讨论】:

  • 这不是问题。并自己阅读:GrepCode: quartz-1.8.4.jar
  • @ppeterka - 我更想知道石英调度器背后的主要动机,而您提供的链接没有回答这个问题。

标签: java threadpool quartz-scheduler


【解决方案1】:

发布问题后,我浏览了网络上的一些内容,发现了一些有用的见解。很抱歉发布一个问题并自己回答,但这对任何可能想理解相同问题的人都有用。

以下是 Quartz 的优点以及它与通常的 Java 计时器接口的比较:

  • Quartz 非常灵活,包含多个可以单独或一起使用的使用范例,以实现您想要的行为,并使您能够以对您的项目最“自然”的方式编写代码。
  • Quartz 非常轻巧,只需很少的设置/配置 - 如果您的需求相对基本,它实际上可以“开箱即用”使用。
  • Quartz 具有容错性,可以在系统重新启动之间保留(“记住”)您计划的作业。

另一方面,它克服了Timer界面中的以下问题:

  • 定时器没有持久性机制。
  • 定时器的调度不灵活(只能设置开始时间和重复间隔,不能基于日期、时间等)
  • 定时器不使用线程池(每个定时器一个线程)
  • 计时器没有真正的管理方案 - 您必须编写自己的机制才能通过名称等记住、组织和检索任务。

如果有人想在上面添加任何信息,请随时这样做。

【讨论】:

  • @AbishekJain After posting the question, I browsed through some content on the web and found some useful insights into the same. 排序错误...下次按正确的顺序进行。 +1 但是用于发布信息
  • @ppeterka - 我意识到这一点。感谢您的关注。
  • Is it a polling kind of mechanism where the thread keeps polling the system time and sees whether the specified time interval has elapsed or does it do some kind of registration with the system clock where the clock itself notifies the quartz scheduler? - 那部分呢?我正在寻找那个。
  • 这不是关于它的工作原理,而是关于它的功能。没有关于其内部运作方式的真实信息。
猜你喜欢
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
相关资源
最近更新 更多