# synchron - asynchron - Thread



## Corcovado (18. Apr 2005)

Hallo,
Ich dachte immer, dass zwei Threads (quasi) gleichzeitig laufen und nannte das frueher immer "synchron". Nun hab ich folgendes gelesen:


> Um nun diese Berechnungen asynchron durchzuführen, entwerfen wir eine Wrapper-Klasse, die von PrimeNumberTools abgeleitet wird und das Interface Runnable implementiert:


www.addison-wesley.de/Service/Krueger/kap10003.htm#E16E54

Dabei gehts um die Erzeugung einer Wrapper Klasse, die eine andre Klasse (die eben Berechnungen ausfuehrt) in einen Thread stellt. Es wird gesagt, dass dies dann ein "asynchrones" berechnen ermoeglicht, wenn die Berechnung als Thread laeuft. Hae? !

Was bedeutet also bitte nochmal "synchron" und "asynchron" - damit ich das auch mal weiss und nich mehr glauben muss?


----------



## Bleiglanz (18. Apr 2005)

in der Java welt oft bei Methodenaufrufen verwendet

x.foo();

heisst synchron, wenn der Thread in dem dieser Aufruf ausgeführt solange wartet, bis die Methode foo fertig ist ("zurückkehrt"); man sagt manchmal auch "es blockt" 

y.bar();

heisst asynchron, wenn dadurch ein neuer thread gestartet wird und der Aufruf also "sofort zurückkehrt", d.h. die bearbeitung findet dann parallel statt, das Programm "blockt" an der stelle nicht...



ist aber reines sprachgebrauch-wischiwaschi, nimms nicht so wichtig


----------



## Corcovado (19. Apr 2005)

sry hab auf obigem Link die Antwort auf der naechsten Seite selber gefunden. Es handelt sich dabei um den Zugriff mehrer Threads auf die selben Daten, der entweder zwischen den Threads aufeinander "abgestimmt" (synchronisiert) oder "unabgestimmt" (asynchron) ablaufen kann, dh der Scheduler vom OS (der Plattform?!) kuemmert sich dann ums abstimmen. 

Asynchrones abarbeiten von Threads kann bewirken, dass zB ein Thread A bei der Berechnung einer Reihe von Werten, die auch andern Threads zur Verfuegung steht, vom Scheduler abgebrochen wird und zunaechst KEIN Ergebnis liefert, waehrend zB ein anderer Thread B anfangen darf. Dieser faengt aber dann beim naechsten Wert der Reihe an zu rechnen. So dass quasi im Endeffekt, bei den Ergebnissen zunaechst eins uebersprungen wird (die Berechnung bei der Thread A abgebrochen wurde). Wenn Thread A wieder weitermachen darf, rechnet er zunaechst den Wert weiter, bei dem er abgebrochen wurde, so dass dieses Ergebnis erst weiter hinten auftaucht. (so hab ich es zumindest mal verstanden und da deckt sich auch einiges mit meinen Erinnerungen...).

Synchron oder asynchron laufen beide parallel, nur eben wie gesagt aufeinander abgepasst oder eben nicht. Sprach-Wischi-waschi - Mathe is auch nur Zahlen-Wischi-Waschi, was bringt mir die Integralrechnung beim Baecker, meine Oma is 85 und hat das nie glernt, man kommt offensichtlich auch ohne aus... :roll:


----------

