2012-10-16 99 views
4

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

是它做的事情(使用石英调度程序),如通过一个XML文件,并轻松地添加新的就业机会,以现有的调度还是有它更多的东西,指定作业配置的一种简便方法是什么?更重要的是,它是否会进行任何形式的优化,例如它不会在整个持续时间内挂在线程上并释放它?它是一种轮询机制,线程持续轮询系统时间并查看指定的时间间隔是否已经过去,或者是否使用系统时钟进行某种类型的注册,其中时钟本身通知石英调度程序?

请让我知道,如果需要对这个问题上面任何进一步的澄清。

+0

这不是一个问题。并且请仔细阅读:[GrepCode:quartz-1.8.4.jar](http://grepcode.com/snapshot/repo1.maven.org/maven2/org.quartz-scheduler/quartz/1.8.4) – ppeterka

+2

@ ppeterka - 我对知道石英调度程序背后的主要动机更感兴趣,并且您提供的链接没有回答这个问题。 –

+0

@ppeterka你的链接没有任何解释。 –

回答

16

张贴的问题后,我通过网络上的一些内容浏览和发现了一些有益的见解相同。很抱歉发表一个问题并自己回答,但对于其他任何愿意理解相同内容的人来说,这一点很有用。

这里是石英的好处,以及它与通常的Java定时器接口比较:

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

在另一方面,它克服了定时器接口存在以下问题:

  • 计时器没有持久性机制。
  • 定时器有不灵活调度(只能够设定启动时间&重复间隔,根据日期什么都没有,一天中的时间等)
  • 定时器不使用线程池(每个定时器的一个线程)
  • 计时器并没有真正的管理方案 - 你必须写自己对于能够记住,组织和名称检索您的工作机制等

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

+3

@AbishekJain发布这个问题后,我浏览了网络上的一些内容,发现一些有用的对同样的见解。' 排序错误...下次按正确的顺序排列。 +1但是发布信息 – ppeterka

+0

@ppeterka - 我意识到这一点。感谢您的关注。 –

+3

'它是一种轮询机制,线程持续轮询系统时间并查看指定的时间间隔是否已经过去,或者它是否使用系统时钟进行某种注册,其中时钟本身通知石英调度器?关于那部分?我正在寻找那个。 –