いcron似の実施のScheduledExecutorService Java?
質問
のScheduledExecutorService Javaはハンディタスクの繰り返しのいずれか一定間隔で固定します。破壊も修復もおもしろくないように、既存のScheduledExecutorServiceをまとめて見ることができる指定時間に一日のスケジュールタスク時ではなく、間隔る"私は、この課題に火午前10時の各デー"を開催しました。
いまでこれを達成石英ないと思いない図書館利用可能な場合(この図書館がいと思いない依存関係のための数理由).
解決
タイマークラス。具体的には、scheduleAtFixedRate(TimerTaskタスク、Date firstTime、long period)。特定の日の午前10時に開始し、24時間ごとに繰り返すようにタスクを設定できます。
他のヒント
もう少し検索を行いました CronExecutorService 。興味深いことに、 CronExpression クラスですが、それだけです。それは悪くない。
更新:壊れたリンクを修正して新しいバージョンを指すようにしましたが、それが唯一の依存関係であるかどうかはわかりません
ThreadPoolTaskSchedulerでき、外部のスレッド管理対象とする。社内での代表者へ ScheduledExecutorService インスタンス. ThreadPoolTaskScheduler 実施の TaskExecutor ス、単一のインスタンスに使用できる非同期の実行などを予定し、潜在的に経常、裁判なしの処刑.
場としてCronTrigger()かcronExpression http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html
詳このソリューションを参照春docs: https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
import java.util.Date;
public class CronTriggerSpringTest{
public static void main(String args[]){
String cronExpression = "0/5 * * * * *";
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.initialize();
scheduler.schedule(new Runnable() {
@Override
public void run() {
System.out.println("Hello Date:"+new Date());
}
}, new CronTrigger(cronExpression));
}
}
scheduleAtFixedRateを使用すると、遅延が発生します。そのため、遅延は午前10時までの差になり、期間は24時間になります。 これは少しでもドリフトする可能性があります。タイマーを使用しても、毎回適切な遅延でScheduledExecutorServiceに自分自身を追加するタスクをスケジュールできます。