2012-10-16 100 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

'它是一種輪詢機制,線程持續輪詢系統時間並查看指定的時間間隔是否已經過去,或者它是否使用系統時鐘進行某種註冊,其中時鐘本身通知石英調度器?關於那部分?我正在尋找那個。 –