Heim > Java > javaLernprogramm > Hauptteil

Einführung in asynchrone Springboot-Aufrufe (mit Code)

不言
Freigeben: 2019-04-12 10:33:15
nach vorne
3571 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine Einführung in asynchrone Springboot-Aufrufe (mit Code). Freunde in Not können darauf verweisen.

Synchronisierung

Die Programme werden nacheinander in der definierten Reihenfolge ausgeführt. Jede Programmzeile muss auf den Abschluss der vorherigen Programmzeile warten, bevor sie ausgeführt werden kann Funktionsaufruf wird ausgegeben, bevor das Ergebnis erhalten wird, das Programm Der Aufruf kehrt nicht zurück.

Asynchron

Wenn das Programm sequentiell ausgeführt wird, wird das nachfolgende Programm ausgeführt, ohne darauf zu warten, dass die asynchrone Aufrufanweisung das Ergebnis zurückgibt. Wenn ein asynchroner Prozeduraufruf ausgegeben wird, kann der Aufrufer das nicht erhalten Ergebnis sofort.

Synchronisationscode

Serviceschicht:

public void test() throws InterruptedException {
       Thread.sleep(2000);
       for (int i = 0; i < 1000; i++) {
           System.out.println("i = " + i);
       }
   }
Nach dem Login kopieren

Controllerschicht:

   @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";
       }
   }
Nach dem Login kopieren

Anfrage im Browserhttp://localhost:8080/test
Konsolendruckreihenfolge:

  1. Hauptthread beginnt
  2. J-Schleife drucken
  3. I-Schleife drucken
  4. Hauptthread endet

Asynchroner Code

Fügen Sie die Annotation @Async zur Testmethode der Serviceschicht hinzu und fügen Sie die Annotation @EnableAsync zur Startklasse für asynchrone Effekte hinzu.
Serviceschicht:

   @Async
   public void test() throws InterruptedException {
       Thread.sleep(2000);
       for (int i = 0; i < 1000; i++) {
           System.out.println("i = " + i);
       }
   }
Nach dem Login kopieren

Controller bleibt unverändert, Start die Klasse plus @EnableAsync:

@SpringBootApplication
@EnableAsync
public class AsyncApplication {
    public static void main(String[] args) {
        SpringApplication.run(AsyncApplication.class, args);
    }
}
Nach dem Login kopieren

Fordern Sie die Drucksequenz erneut wie folgt an:

  1. Hauptthread beginnt
  2. J-Schleife drucken
  3. Main Fadenenden
  4. I-Schleife drucken

Das obige ist der detaillierte Inhalt vonEinführung in asynchrone Springboot-Aufrufe (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage