@Scheduled
13795 ワード
REF: https://www.baeldung.com/spring-scheduled-tasks @Scheduledコメントを使用する規則 メソッドの戻りタイプはvoidでなければなりません( )メソッドはパラメータを受け入れません
Usage スケジューリング の有効化
Fixed Delay Fixed Rate
デフォルトでは、タスクが完了していない場合は、次のタスクは実行されません.パラレルXを並列に実行する必要があるジョブについて、@Asyncの他の を追加します.
Fixed Rate vs Fixed Delay
Fixed Delayタスク実行完了時間と次のタスク実行開始時間の間のnミリ秒条件をチェック このオプションは、常に1つのインスタンスジョブのみを実行する必要がある場合に便利です.依存ジョブには が便利です.
Fixed Rateはnミリ秒ごとに計画タスクを実行します
各ジョブのすべての実行は独立しています.
メモリとスレッドプールのサイズを超えないと予想されます.
タスクがスタックされ続けると、メモリ異常Out of Memory Exceptionが発生する可能性があります.
Initial Delay
初期InitialDelayの後にタスクを実行し、fixeddelayを使用してタスクを実行する場合は、初期化時間が必要な場合に便利です. Cron Expressions
Parameterizing the Schedule
外部Spring式を使用した設定ファイルにパラメータを注入できます.
A fixedDelay task:
A fixedRate task:
A cron expression based task:
XML設定の使用
@Configuration
@EnableScheduling
public class SpringConfig {
...
}
@Scheduled(fixedDelay = 1000)
public void scheduleFixedDelayTask() {
System.out.println(
"Fixed delay task - " + System.currentTimeMillis() / 1000);
}
@Scheduled(fixedRate = 1000)
public void scheduleFixedRateTask() {
System.out.println(
"Fixed rate task - " + System.currentTimeMillis() / 1000);
}
Fixedrateは、各タスクが独立している場合に使用されます.デフォルトでは、タスクが完了していない場合は、次のタスクは実行されません.パラレルX
@EnableAsync
public class ScheduledFixedRateExample {
@Async
@Scheduled(fixedRate = 1000)
public void scheduleFixedRateTaskAsync() throws InterruptedException {
System.out.println(
"Fixed rate task async - " + System.currentTimeMillis() / 1000);
Thread.sleep(2000);
}
}
Fixed Rate vs Fixed Delay
Fixed Delayタスク実行完了時間と次のタスク実行開始時間の間のnミリ秒条件をチェック
Fixed Rateはnミリ秒ごとに計画タスクを実行します
各ジョブのすべての実行は独立しています.
メモリとスレッドプールのサイズを超えないと予想されます.
タスクがスタックされ続けると、メモリ異常Out of Memory Exceptionが発生する可能性があります.
Initial Delay
@Scheduled(fixedDelay = 1000, initialDelay = 1000)
public void scheduleFixedRateWithInitialDelayTask() {
long now = System.currentTimeMillis() / 1000;
System.out.println(
"Fixed rate task with one second initial delay - " + now);
}
@Scheduled(cron = "0 15 10 15 * ?")
public void scheduleTaskUsingCronExpression() {
long now = System.currentTimeMillis() / 1000;
System.out.println(
"schedule tasks using cron jobs - " + now);
}
Parameterizing the Schedule
外部Spring式を使用した設定ファイルにパラメータを注入できます.
A fixedDelay task:
@Scheduled(fixedDelayString = "${fixedDelay.in.milliseconds}")
A fixedRate task:
@Scheduled(fixedRateString = "${fixedRate.in.milliseconds}")
A cron expression based task:
@Scheduled(cron = "${cron.expression}")
XML設定の使用
<!-- Configure the scheduler -->
<task:scheduler id="myScheduler" pool-size="10" />
<!-- Configure parameters -->
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="beanA" method="methodA"
fixed-delay="5000" initial-delay="1000" />
<task:scheduled ref="beanB" method="methodB"
fixed-rate="5000" />
<task:scheduled ref="beanC" method="methodC"
cron="*/5 * * * * MON-FRI" />
</task:scheduled-tasks>
Reference
この問題について(@Scheduled), 我々は、より多くの情報をここで見つけました https://velog.io/@promh90/Scheduledテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol