Cet article vous présente une introduction aux appels asynchrones Springboot (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Synchronisation
Les programmes sont exécutés séquentiellement dans l'ordre défini. Chaque ligne du programme doit attendre la fin de la ligne de programme précédente avant de pouvoir être exécutée. L'appel de fonction est émis, avant que le résultat ne soit obtenu, le programme L'appel ne revient pas.
Asynchrone
Lorsque le programme est exécuté séquentiellement, le programme suivant est exécuté sans attendre que l'instruction d'appel asynchrone renvoie le résultat. Lorsqu'un appel de procédure asynchrone est émis, l'appelant ne peut pas obtenir le résultat. résultat immédiatement.
Code de synchronisation
Couche service :
public void test() throws InterruptedException { Thread.sleep(2000); for (int i = 0; i < 1000; i++) { System.out.println("i = " + i); } }
Couche contrôleur :
@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"; } }
Demande dans le navigateurhttp://localhost:8080/test
Ordre d'impression de la console :
Ajouter l'annotation @Async
à la méthode de test de la couche Service. En même temps, afin que l'asynchrone prenne effet, ajoutez l'annotation @EnableAsync
à la classe de démarrage
Couche Service :
@Async public void test() throws InterruptedException { Thread.sleep(2000); for (int i = 0; i < 1000; i++) { System.out.println("i = " + i); } }
Le contrôleur reste inchangé, et la classe de démarrage est ajoutée avec @EnableAsync
:
@SpringBootApplication @EnableAsync public class AsyncApplication { public static void main(String[] args) { SpringApplication.run(AsyncApplication.class, args); } }
Demandez à nouveau la séquence d'impression comme suit :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!