16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Programmieren</strong> <strong>in</strong> <strong>Java</strong><br />

ma<strong>in</strong><br />

start thread2<br />

start thread1<br />

jo<strong>in</strong> thread2<br />

jo<strong>in</strong> thread1<br />

thread1<br />

thread2<br />

Zeit<br />

Abb.: Zusammenspiel von Threads <strong>in</strong> ThreadDemo<br />

ZweiterThread implementiert Runnable. Hier muß explizit e<strong>in</strong>e Instanz von Thread erzeugt<br />

wer<strong>de</strong>n.<br />

Die Instanz von ZweiterThread wird e<strong>in</strong>em Thread-Objekt übergeben, <strong>de</strong>r die run()-Metho<strong>de</strong><br />

betreibt.<br />

ErsterThread kann sich selber schlafen legen. ZweiterThread legt die benutzte Instanz von Thread<br />

schlafen.<br />

Bei Programmstart existiert immer automatisch e<strong>in</strong> ErsterThread, <strong>de</strong>ssen Ausführung <strong>in</strong> <strong>de</strong>r<br />

ma<strong>in</strong>()-Metho<strong>de</strong> beg<strong>in</strong>nt. Dieser ma<strong>in</strong>-Thread startet nun zwei weitere Threads und wartet (jo<strong>in</strong>())<br />

auf das En<strong>de</strong> dieser Threads.<br />

Bei je<strong>de</strong>m Ablauf ergibt sich nicht-<strong>de</strong>term<strong>in</strong>istisch e<strong>in</strong>e an<strong>de</strong>re Reihenfolge <strong>de</strong>r Ausgaben<br />

1.4.2.4.3. Prozesse und Threads <strong>in</strong> <strong>Java</strong><br />

E<strong>in</strong> <strong>Java</strong>-Programm besitzt <strong>in</strong> <strong>de</strong>r Regel e<strong>in</strong>e Klasse mit e<strong>in</strong>er statischen Metho<strong>de</strong><br />

ma<strong>in</strong>().<br />

Bei je<strong>de</strong>m Start e<strong>in</strong>es <strong>Java</strong>-Programms erzeugt das Betriebssystem e<strong>in</strong>en Prozeß<br />

und startet die virtuelle Masch<strong>in</strong>e (VM). Die VM erzeugt e<strong>in</strong>en Haupt-Thread (ma<strong>in</strong><br />

thread) auch Programmfa<strong>de</strong>n, Kontrollfluß o<strong>de</strong>r leichtgewichtiger Prozeß genannrt.<br />

Der Ma<strong>in</strong>-Thread führt daraufh<strong>in</strong> die Metho<strong>de</strong> ma<strong>in</strong>() aus.<br />

E<strong>in</strong>e Metho<strong>de</strong> im Quelltext besteht aus e<strong>in</strong>er Sequenz von Anweisungen. Beim<br />

Übersetzen <strong>de</strong>s Quelltextes, wird je<strong>de</strong> Anweisung <strong>in</strong> mehrere elementare<br />

Teilanweisungen (byte co<strong>de</strong>s) für die VM zerlegt. E<strong>in</strong> <strong>Java</strong>-Thread führt diese<br />

e<strong>in</strong>zelnen elementaren Anweisungen e<strong>in</strong>er Metho<strong>de</strong> (z.B. ma<strong>in</strong>()) und die<br />

Anweisungen <strong>de</strong>r dar<strong>in</strong> enthaltenen Metho<strong>de</strong>n squentiell aus.<br />

<strong>Java</strong>-Prozesse wer<strong>de</strong>n auf Betriebssystem-Prozesse abgebil<strong>de</strong>t, d.h.: Auch <strong>Java</strong>-<br />

Threads können auf Betriebssystem-Threads abgebil<strong>de</strong>t wer<strong>de</strong>n. Man spricht von<br />

e<strong>in</strong>er virtuellen Masch<strong>in</strong>e, die native Threads unterstützt.<br />

104

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!