spring bootのタイミングタスク
2488 ワード
1.タイミングタスクを有効にする
起動クラスに注釈を追加する
2.タイミングタスクの設定ファイル
3.タイミングタスクコードを追加する
タイミングタスクの方法では、注@Schduled(cron="0/10***?")の表現は、何も言われていません。 @Scheduled(fixedRate=5000)の感覚は表現と同じで、5秒ごとに を実行します。@Scheduled(fixedDelay=5000)は、テスト結果から見ても、5秒ごとに を実行します。
起動クラスに注釈を追加する
@EnableScheduling
は、spring bootのタイミングタスクを有効にする。2.タイミングタスクの設定ファイル
@Configuration
によって示されたクラスでは、注釈@EnableAsync
が非同期イベントのサポートを開始することを追加する。設定を追加/*
@Value
*/
private int corePoolSize = 10;
private int maxPoolSize = 20;
private int queueCapacity = 10;
// Executor import java.util.concurrent.Executor;
@Bean
public Executor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(corePoolSize);
executor.setMaxPoolSize(maxPoolSize);
executor.setQueueCapacity(queueCapacity);
executor.initialize();
return executor;
}
このようにする目的はマルチスレッドサポートのタイミングタスクを開くためです。この設定を追加しないと、同時に複数の異なるタイミングタスクが実行されます。タイムミッションがある場合、他のタイミングタスクは実行できません。これを配置すると、各タイミングタスクは個々のスレッドであり、自分で自分のタイミングタスクを実行し、互いに影響を与えない。ただし、例えば、タイミングタスクAは10秒ごとに実行され、一回実行した時に引っかかってしまい、10秒になっても実行が完了していない場合、タイミングタスクAはまた新しいスレッドを起動して実行します。つまり、同時に二つのタイミングタスクAが実行されていますので、この点に注意してください。あなたに影響がありますか?3.タイミングタスクコードを追加する
タイミングタスクの方法では、注
@Async
を追加します。この注釈を使わないと、やはりスレッドでタイミングタスクを実行します。マルチスレッドではありません。@Async
@Scheduled(cron = "0/10 * * * * ?")
public void process() {
logger.info("#################### do something start ######################");
logger.info("#################### do something end #######################");
}
4.いくつかの書き方: