Kursinhalt
Multithreading in Java
Multithreading in Java
Grundlagen der Asynchronen Programmierung
Hier werden wir untersuchen, was asynchrones Programmieren ist und wie es sich von Multithreading unterscheidet. In diesem Abschnitt wird es keine umfangreichen praktischen Beispiele geben, da wir diese in den nächsten Kapiteln behandeln werden. Für den Moment werden wir uns mehr auf die Theorie konzentrieren.
Was ist Asynchrones Programmieren?
Stellen Sie sich einen Webserver vor, der Anfragen von Benutzern bearbeitet. Wenn ein Benutzer eine Anfrage stellt, um Daten aus der Datenbank abzurufen, kann der Server asynchrones Programmieren verwenden, um diese Anfrage zu starten und andere Anfragen weiter zu verarbeiten, ohne darauf zu warten, dass die Operation abgeschlossen ist. Auf diese Weise bleibt der Server nicht untätig, während er auf eine Antwort von der Datenbank wartet!
Hinweis
Mit asynchronem Programmieren ist die Operation vergleichbar mit der gleichzeitigen Zubereitung mehrerer Gerichte.
Rückrufe
Rückrufe sind ein wesentlicher Aspekt der asynchronen Programmierung. Sie ermöglichen es Ihnen, spezifische Aktionen auszuführen, sobald die Aufgabe abgeschlossen ist, ohne den Hauptprogramm-Thread zu blockieren.
Zum Beispiel, wenn Sie eine asynchrone Anfrage an einen Server stellen, wird die Rückruffunktion aufgerufen, wenn der Server eine Antwort zurücksendet.
Was ist dann der Unterschied zwischen Multithreading und Asynchronität?
Im weiteren Sinne ist Multithreading die Fähigkeit eines Programms, mehrere Aufgaben gleichzeitig auszuführen, indem es verschiedene Ausführungs-Threads nutzt.
Stellen Sie sich ein Restaurant vor, in dem Köche (Threads) gleichzeitig an verschiedenen Gerichten arbeiten. Ein Koch macht Suppe, ein anderer grillt ein Steak und ein dritter schneidet Gemüse. Jeder Koch arbeitet unabhängig, aber sie arbeiten alle gleichzeitig, um die Kunden schneller zu bedienen.
Stellen Sie sich ein Restaurant vor, in dem ein Koch (Hauptthread) ein komplexes Gericht zubereitet, aber er muss warten, bis das Wasser kocht (Hintergrundaufgabe). Anstatt zu stehen und zu warten (Blockierung), kann der Koch andere Arbeiten erledigen, wie zum Beispiel Gemüse schneiden. Wenn das Wasser kocht, erhält er eine Benachrichtigung und setzt das Kochen des Gerichts fort.
Asynchronität in Java kann durch folgende Klassen/Interfaces dargestellt werden:
Future
(wir haben gelernt): Ein Interface, das das Ergebnis einer asynchronen Berechnungsaufgabe darstellt. Methoden ermöglichen es Ihnen zu überprüfen, ob die Aufgabe abgeschlossen ist, darauf zu warten, dass sie abgeschlossen wird, und das Ergebnis zu erhalten;CompletableFuture
(was wir im nächsten Kapitel lernen werden): eine Klasse, die dasFuture
-Interface implementiert und Einrichtungen zum Aufbau komplexer asynchroner Berechnungen bietet. Methoden ermöglichen es Ihnen, Aufgaben zu kombinieren, Fehler zu behandeln und Aktionen nach Abschluss der Aufgaben auszuführen;Executor
: Ein Interface, das eine execute-Methode bereitstellt, die eine Aufgabe alsRunnable
entgegennimmt und sie asynchron ausführt;ExecutorService
(wir haben gelernt): ErweitertExecutor
durch Hinzufügen von Methoden zur Verwaltung des Lebenszyklus und zur Ausführung von Aufgaben, die ein Ergebnis zurückgeben.
Zusammenfassung
Asynchrones Programmieren hilft Ihnen, reaktionsfähigere und effizientere Anwendungen zu erstellen, indem es Blockierungen vermeidet und eine bessere Ressourcennutzung bietet.
1. Was ist das Grundprinzip der asynchronen Programmierung?
2. Was ist der Hauptunterschied zwischen Multithreading und Asynchronität?
3. Welches Problem löst die asynchrone Programmierung im Vergleich zum traditionellen Multithreading?
Danke für Ihr Feedback!