Heim  >  Artikel  >  Java  >  Einführung in asynchrone Springboot-Aufrufe (mit Code)

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

不言
不言nach vorne
2019-04-12 10:33:153572Durchsuche

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);
       }
   }

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";
       }
   }

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);
       }
   }

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);
    }
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Was ist Backend-Entwicklung?Nächster Artikel:Was ist Backend-Entwicklung?