2017-11-17 16 views
-1

私は、毎日午前11時に定期的に呼び出す方法があります。これは、メインで簡単な方法です:Javaで定期的にタスクを実行するより良い方法

public void loadProduct() { 
PropertyConfigurator.configure("log4j.properties"); 
try { 
    service.create(product); 
    logger.info("Creation started"); 
} catch (Exception e) { 
    // Log Exception 
    logger.error(e); 
} 
} 

私はほとんどSpringコンテキストの助けを借りてこれを実現する方法を考え出した:

<task:scheduler id="scheduler" pool-size="1"/> 

<task:scheduled-tasks scheduler="scheduler"> 
    <task:scheduled ref="productTask" method="loadProduct" cron="0/30 * * * * *"/> 
</task:scheduled-tasks> 

しかし、どのように24時間ごとに起動するようにタスクをスケジュールするには毎日午前11時?

これをJavaコードで実現する方法はありますか?

+0

x秒(またはサーバー上の時刻)ごとにシステム時刻をチェックするタイマーまたはデーモンスレッドを作成することができます – Stultuske

+1

cronジョブを実行できるユーティリティがあるようです。あなたの質問の要点は、cronジョブを書く方法を学ぶことです。これについては、manページから学んでください。 – Makoto

+0

http://corntab.com/を使用できます。 crontabはそうではないが、春のスケジューラには秒があると考えてください。したがって、crontabには5(*)、春スケジューラには6があります。 – Nonika

答えて

2

しかし、毎日午前11時にタスクを開始するようにスケジュールを設定するにはどうすればよいですか。

これは、cron式を使用すると実現できます。0 0 11 * * *

これをJavaコードで実現する方法はありますか?

はい、例えば、Scheduled (Spring Framework 5.0.1.RELEASE API)アノテーションを使用することにより:

@Scheduled(cron = "0 0 11 * * *", zone = "Europe/Moscow") 
public void run() { 
    // ... 
} 

その他の参照:

  1. Integration: 7. Task Execution and Scheduling: 7.4. Annotation Support for Scheduling and Asynchronous Execution, Spring Framework Documentationを。
  2. Getting Started · Scheduling Tasks
関連する問題