石英调度程序如何工作?[已关闭]

2022-09-04 08:35:24

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

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

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


答案 1

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

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

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

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

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

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


答案 2

推荐