12

私の質問は次のとおりです:クォーツスケジューラはどのように機能し、指定された時間間隔に従ってウェイクアップし、必要なジョブを実行する Runnable インターフェイス (基本的にはスレッド) を実装する通常のクラスとどのように違うのですか?

XMLファイルを介してジョブ構成を指定したり、既存のスケジューラに新しいジョブを簡単に追加したりするなど、(クォーツスケジューラを使用して)便利な方法ですか、それとももっと何かありますか?もっと言えば、スレッド全体にハングアップせずに解放するなど、何らかの最適化を行うのですか? スレッドがシステム時間をポーリングし続け、指定された時間間隔が経過したかどうかを確認するポーリングのようなメカニズムですか、それともクロック自体がクォーツスケジューラに通知するシステムクロックに何らかの登録を行いますか?

上記の質問についてさらに説明が必要な場合はお知らせください。

4

1 に答える 1

22

質問を投稿した後、ウェブ上のいくつかのコンテンツを閲覧したところ、同じことに関するいくつかの有用な洞察が見つかりました. 質問を投稿して自分で答えて申し訳ありませんが、同じことを理解したいと思う他の人にとっては役に立ちます。

以下に、Quartz の利点と、通常の Java タイマー インターフェイスとの比較を示します。

  • Quartz は非常に柔軟で、目的の動作を実現し、プロジェクトにとって最も「自然」と思われる方法でコードを記述できるようにするために、個別または一緒に使用できる複数の使用パラダイムが含まれています。
  • Quartz は非常に軽量で、セットアップや構成はほとんど必要ありません。ニーズが比較的基本的なものであれば、実際に「箱から出して」使用することができます。
  • Quartz は耐障害性があり、システムの再起動間でスケジュールされたジョブを保持 (「記憶」) できます。

一方、Timer インターフェイスの次の問題は解決されます。

  • タイマーには持続メカニズムがありません。
  • タイマーには柔軟性のないスケジューリングがあります (開始時間と繰り返し間隔を設定することしかできず、日付、時刻などに基づくものは何もありません)。
  • タイマーはスレッドプールを使用しません (タイマーごとに 1 つのスレッド)
  • タイマーには実際の管理スキームはありません。タスクを名前で覚えたり、整理したり、取得したりするには、独自のメカニズムを作成する必要があります。

誰かが上記に情報を追加したい場合は、遠慮なくそうしてください。

于 2012-10-16T06:59:11.337 に答える