この記事では、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
コンソール印刷シーケンス:
@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: ## で追加されます。 #<pre class="brush:php;toolbar:false">@SpringBootApplication
@EnableAsync
public class AsyncApplication {
public static void main(String[] args) {
SpringApplication.run(AsyncApplication.class, args);
}
}</pre>
次のように印刷シーケンスを再度要求します。
以上がspringboot 非同期呼び出しの概要 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。