質問

アプリケーションが最初に実行された時期や実行時間に関係なく、毎日午後3時にメソッドを実行する効果的な方法を探しています。

これは、OSの介入なしでアプリケーションから完全に実行する必要があります(例:Windowsタスクスケジューラ)

さまざまな構成でjava.util.Timerを試していますが、成功していません。

ご協力いただければ幸いです。

ありがとう。

役に立ちましたか?

解決

Javaベースのジョブスケジューリングシステムである Quartz をご覧ください。

他のヒント

クォーツエンジンのようなものを使用したいと思うでしょう。 ( ahem のクラッシュ時など)失敗したため、スレッドを管理しようとする作業が不要になります。

たとえば、スレッドを使用してスリープ状態にし、86400秒(1日)後にウェイクアップすると、DSTの切り替え時に1時間遅れて(1日= 82800秒)または早く(1日= 90000秒)起動します日なので、選択したソリューションに注意してください

組み込みのJDKの方法は、他の人が提案したことを行い、最初に計算することです:

  • currentTime-desiredTime

次に、 aのようなものを使用できます。 executorをスケジュールしてタスクを送信し、特定の遅延で実行します。これは、クォーツなどのフレームワークで使用するオプションよりもはるかに簡単ですが、外部を必要としません依存関係。

また、使用しているJDKを常にリストする必要があります。そうすれば、JDKのバージョンに応じたソリューションを提供できます。

次の午後3時までの差を計算し、その時間スリープするスレッドを開始できます。起動すると、メソッドを実行し、再計算してスリープします。これはあなたの意図ですか?

他の人が述べたように、クォーツは選択肢であり、cronのような操作、ジョブ、またはトリガーを実行できます。このテーマに関するリンクは次のとおりです。 http://www.ibm.com/developerworks/java/library/j-quartz/index.html

Jcrontab

  

Jcrontabは、Javaで記述されたスケジューラです。プロジェクトの目的は、Javaプロジェクトに完全に機能するスケジュールを提供することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top