@Scheduledアノテーションがどのように機能するかを説明する必要があります。Scheduled には、 fixedDelay、fixedRate、およびcron
の 3 つの定義があります。fixedDelay
の期間は、先行する各呼び出しの完了時刻から測定されますが、fixedRateの期間は、各呼び出しの連続する開始時刻の間で測定されます。
しかし、クーロン期間はどうですか?彼はどのように測定されますか?
編集:cronは、両方の固定
情報のような期間ではない
ことを知っています。私の質問を例で説明します。
example-method は、完了するまでに 2 分かかります。しかし、 @Scheduled -Annotationを使用すると、メソッドを毎分実行できます。
@Scheduled(fixedDelay = 1000)
public void exampleMethod(){}
fixedDelay はメソッドが完了するまで待機し、その後 1 分間待機します。したがって、メソッドは 3 分ごとに実行されます。
@Scheduled(fixedRate = 1000)
public void exampleMethod(){}
fixedRate は、各呼び出しの連続する開始時間の間に 1 分間待機します。したがって、メソッドは毎分実行され、メソッドが完了したかどうかは関係ありません。
@Scheduled(cron = "0 * * * * *")
public void exampleMethod(){}
そこで、cron を毎分実行するように設定しました。メソッドは毎分実行されますか、それとも cron はメソッドが完了するまで待機しますか?