springboot 非同期呼び出しの概要 (コード付き)

不言
リリース: 2019-04-12 10:33:15
転載
3573 人が閲覧しました

この記事では、springboot の非同期呼び出しの概要 (コード付き) を紹介します。これには一定の参考価値があります。必要な友人は参照してください。お役に立てば幸いです。

同期

プログラムは、定義された順序で順次実行されます。プログラムの各行は、実行する前に、プログラムの前の行が完了するまで待機する必要があります。関数呼び出しが発行されても、結果が得られる前にプログラムの呼び出しは戻りません。

非同期

プログラムが順次実行される場合、非同期呼び出しステートメントが結果を返すのを待たずに後続のプログラムが実行されます。非同期プロシージャ呼び出しが発行された場合、呼び出し元はプロシージャ呼び出しステートメントを取得できません。すぐに結果が出る。

同期コード

サービス層:

public void test() throws InterruptedException {
       Thread.sleep(2000);
       for (int i = 0; i < 1000; i++) {
           System.out.println("i = " + i);
       }
   }
ログイン後にコピー

コントローラ層:

   @GetMapping("test")
   public String test() {
       try {
           Thread.sleep(1000);
           System.out.println("主线程开始");
           for (int j = 0; j < 100; j++) {
               System.out.println("j = " + j);
           }
           asyncService.test();
           System.out.println("主线程结束");
           return "async";
       } catch (InterruptedException e) {
           e.printStackTrace();
           return "fail";
       }
   }
ログイン後にコピー

ブラウザでのリクエストhttp://localhost:8080/test
コンソール印刷シーケンス:

    #メイン スレッドの開始
  1. Print j ループ
  2. Print i ループ
  3. メイン スレッドの終了
非同期コード

サービス層のテストメソッドに

@Asyncアノテーションを追加し、同時にスタートアップクラスにを追加します。 @EnableAsyncAnnotation サービス層:

   @Async
   public void test() throws InterruptedException {
       Thread.sleep(2000);
       for (int i = 0; i < 1000; i++) {
           System.out.println("i = " + i);
       }
   }
ログイン後にコピー
Controller は変更されず、スタートアップ クラスが

@EnableAsync: ## で追加されます。 #<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">@SpringBootApplication @EnableAsync public class AsyncApplication {     public static void main(String[] args) {         SpringApplication.run(AsyncApplication.class, args);     } }</pre><div class="contentsignin">ログイン後にコピー</div></div>次のように印刷シーケンスを再度要求します。

メイン スレッドの開始
  1. Print j ループ
  2. メイン スレッドの終了
  3. Print i ループ

以上がspringboot 非同期呼び出しの概要 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート