ホームページ  >  記事  >  Java  >  Springboot の非同期タスクとスケジュールされたタスクを処理する方法

Springboot の非同期タスクとスケジュールされたタスクを処理する方法

PHPz
PHPz転載
2023-05-25 20:05:121945ブラウズ

1 はじめに

Springbootでは、問題に対処するために非同期タスクとスケジュールされたタスクが頻繁に発生します。これら 2 つの構成をうまく活用し、通常の業務を妨げないようにするためです。 , 非同期に設定する必要があります。適切な非同期処理スレッドをセットアップする方法が核心であり鍵です。

2 非同期タスクの設定

プロジェクトで非同期タスクを使用することは、リクエストの待ち時間を短縮し、業務処理の非同期バックグラウンド処理を実行するために、問題を解決するために頻繁に発生する方法です。ユーザーエクスペリエンスを向上させ、システムのスループットを向上させることができます。

springboot で非同期タスクを開くのも非常に簡単です。 必要な手順は次の 2 つの手順だけです。

  • 1

    を開く@EnableAsync アノテーション。

  • 2 非同期処理が必要なメソッドに

    @Async を追加します。

非同期実行メソッドは戻り値を持つことができますが、それは

Future である必要があることに注意してください。ここではマルチスレッド ## で送信されます。 #submit way タスク、処理結果を取得する方法。 この時点で、非同期タスクの構成と使用は終了です。非同期タスクもマルチスレッド スレッド プール テクノロジを使用します。デフォルトでは、

SimpleAsyncTaskExecutor

が実装に使用されます。しかし、自分自身の運命を他人の手に委ねることはできますか?私はいつもそれが現実的ではないと感じています。非同期タスクはどのように実装できますか? カスタム スレッド プールを使用して非同期タスクを実装するにはどうすればよいですか? これは良い質問であり、AsyncConfigurer という答えがあります。これはインターフェイスです。スレッド プールを取得するには、getAsyncExecutor メソッドを実装する必要があります。例外情報をキャプチャする必要がある場合は、メソッド getAsyncUncaughtExceptionHandler を実装します。

具体的なコードは次のとおりです。

Springboot の非同期タスクとスケジュールされたタスクを処理する方法

非同期タスクの実行結果は次のとおりです。非同期タスクのスレッド プール 設定が有効になりました:

Springboot の非同期タスクとスケジュールされたタスクを処理する方法3 スケジュールされたタスクの設定

スケジュールされたタスクは非常に一般的に使用されると言えます。ビジネス機能としてのプロジェクト開発の構成 重要な役割を果たす報酬が存在します スケジュールされたタスクの使用は、固定時間と

crontab

式に分けることができます 実装ツールに関しては、spring があります 組み込み @Schedule は、単一のプロジェクトで広く使用されており、他のプラットフォームや追加の構成の助けを必要としません。単純なタスクには十分ですが、分散システムの場合は少し面倒ですこのとき、quartz、elastic-job、xxl-job が誕生しましたが、その中でも特に優れていたのが xxl-job でした。ここでは、@Schedule の使用法のみを紹介します。

    1
  • @EnableScheduling

    アノテーションをグローバルに有効にします。

  • 2 実行が必要なタスクに
  • @Schedule

    アノテーションを追加し、固定実行か cron# による実行方法を指定します。 ## 表現。

    実際のプロジェクト開発では、
  • crontab
式が依然として広く使用されています:

および実行と同様非同期タスクの場合、スケジュールされたタスクの実行にも独自の非同期タスク スレッド プールがあります。ここで実装する必要があるインターフェイスは Springboot の非同期タスクとスケジュールされたタスクを処理する方法SchedulingConfigurer

です。その

configureTasks メソッドを実装するだけです:

Springboot の非同期タスクとスケジュールされたタスクを処理する方法すべての構成ファイルが完了すると、スケジュールされたタスクのスレッド プール構成が次の実行後に有効になっていることがわかります。

##

以上がSpringboot の非同期タスクとスケジュールされたタスクを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。