Was ist der Unterschied zwischen asynchron und synchron in Java?


Antwort 1:

Java-Code wird zeilenweise ausgeführt. Angenommen, Sie lesen eine Reihe großer Dateien mit Prüfungsdetails der Schulen des gesamten Bundesstaates, wobei eine Datei Daten zu den Prüfungsergebnissen einer Schule enthält.

Außerdem möchten Sie die Schülerdatensätze nach Gesamtnoten pro Klasse sortieren und auf der Benutzeroberfläche anzeigen. Wenn Sie dies als normalen Java-Code schreiben (dh ohne Multithreading), wird jede Zeile einzeln ausgeführt. Sie können keine andere Datei verarbeiten, wenn eine Datei noch nicht verarbeitet wurde. Wenn Sie beispielsweise eine parallele Operation ausführen möchten: Erstellen einer DB-Verbindung, ist dies nicht möglich, da dies erst nach Abschluss der Dateiverarbeitung erfolgt. Dieses sequentielle Verhalten kann als synchrones Verhalten bezeichnet werden.

Jetzt können Sie eine Untergruppe von Dateien sehr gut lesen und verarbeiten, ohne die Verarbeitung anderer Dateien zu unterbrechen, indem Sie Aufgaben parallel ausführen (auch als Threads bezeichnet). Dieses Phänomen wird als Multithreading bezeichnet. Der Anrufer (derjenige, der das Ergebnis benötigt) kann benachrichtigt werden, wenn die Verarbeitung abgeschlossen ist, und das Ergebnis kann dann für die weitere Verarbeitung verwendet werden. Die Ausführung, die unabhängig erfolgt, ohne den normalen Ausführungsfluss zu unterbrechen, wird als asynchroner Aufruf bezeichnet.

Es gibt verschiedene Möglichkeiten, wie Sie in Java je nach Ihren Anforderungen asynchrone Aufrufe tätigen können. (Aber es ist manchmal extrem wichtig und schwierig, sie gut zu kontrollieren.)

Zusätzlich zur ausführbaren Schnittstelle (die nur zum Ausführen von Aufgaben verwendet wird, aber nichts an den Aufrufer zurückgibt) können Sie in Java Informationen zur aufrufbaren Schnittstelle und zu zukünftigen Objekten lesen. (Was Daten an den Anrufer zurückgeben kann)

Dieser Ausschnitt stammt aus dem Orakel-Blog

Verwenden von Callable, um Ergebnisse von Runnables zurückzugeben


Antwort 2:

Asynchrone vs. synchrone Ausführung

Der Unterschied zwischen synchroner und asynchroner Ausführung mag zunächst etwas verwirrend erscheinen. Die Programmausführung in den meisten Hochsprachen ist normalerweise sehr einfach. Ihr Programm beginnt in der ersten Zeile des Quellcodes und jede Codezeile wird danach nacheinander ausgeführt. Leicht genug.

Die synchrone Programmausführung ähnelt in etwa der obigen. Ihr Programm wird zeilenweise zeilenweise ausgeführt. Bei jedem Aufruf einer Funktion wartet die Programmausführung, bis diese Funktion zurückkehrt, bevor mit der nächsten Codezeile fortgefahren wird.

Diese Ausführungsmethode kann unerwünschte Auswirkungen haben. Angenommen, eine Funktion wird aufgerufen, um einen zeitaufwändigen Prozess zu starten. Was ist, wenn Sie den langwierigen Prozess stoppen möchten? Bei der synchronen Ausführung bleibt Ihr Programm stecken und wartet darauf, dass der Prozess ohne Ausweg beendet wird.

Die asynchrone Ausführung vermeidet diesen Engpass. Sie sagen im Wesentlichen: "Ich weiß, dass dieser Funktionsaufruf viel Zeit in Anspruch nehmen wird, aber mein Programm möchte nicht warten, während es ausgeführt wird."

Für weitere Details lesen Sie die folgenden Blogs,

http: //learn4sfdc.blogspot.in/20 ...

http: //www.bisque.com/help/ccdso ...

Dies kann für Sie hilfreich sein ..!