2017-07-20 2 views
-4

私は午後9時30分から翌日午前10時まで実行する必要のあるJavaプログラムを持っています。この時間の間、プログラムは1時間ごとに実行されます。そのために私はThread.sleep(60*60*1000)を使用しました。Javaで時間範囲で寝る方法

これは1時間ごとに実行されます。この時間間隔の間にのみ実行されるようにこの設定を変更するにはどうしたらいいですか?

+3

詳細情報を入手するには、検索エンジンでスケジューラを使用してJavaスケジュールを検索する必要があります。 –

+2

多分あなたは[Quartz](http://www.quartz-scheduler.org/) – ymonad

+0

を使用することができます。Linux OSを使用している場合は、cronを使用できます。しかし、あなたが望むものは非常に不明です。シェルやアプリケーションサーバーなどでプログラムを実行した場合の解決策は、おそらく非常に異なるかもしれません。 – Jens

答えて

1

現在のように眠ってから、タイマーがトリガーすると、LocalTimeまたは同等のものを使用して現在の時刻をチェックしてください。時間があなたが望む時間の範囲にない場合は、何もしないでください(または終了するなど)。時間帯にいる場合は、あなたの行動を実行します。

またはScheduledExecutionServiceを使用してください。これは、通常のTimerよりも長い時間範囲で精度と信頼性が向上する可能性があります。

あなたのニーズがより「エンタープライズ」である場合、コメントで言うように、独自のコードを使用するのではなく、専用のフレームワークを使用する方がよい場合があります。

+2

ホイールを再発明する以外の目的で設計されたフレームワーク(Quartzなど)を使用する方が常に優れています。 –

+0

@PradeepSimha私はそれがタスクに依存していると思います。これは複雑な作業ではないと思われます。これを行うために必要ないくつかの余分なコード行を書くだけで簡単です外部ライブラリ全体。 さらに、これは再発明するための特に大きな車のようではありません!編集:私は両方のビューを提示する私の答えを更新しましたが、文脈が正しい限りあなたに同意します。 – hnefatl

+0

私に教えてください、私はこれを行うことができます...私は私の会社の制限のcronタブbczを使用することはできません。 –

関連する問題