石英调度器如何工作?

时间:2012-10-16 06:13:04

标签: java threadpool quartz-scheduler

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

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

如果上述问题需要进一步澄清,请与我们联系。

1 个答案:

答案 0 :(得分:17)

在发布问题后,我浏览了网络上的一些内容,并找到了一些有用的见解。很抱歉发布问题并自己回答,但对于其他可能想要了解相同问题的人来说,这会很有用。

以下是Quartz的优点及其与通常的Java计时器界面的比较:

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

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

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

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