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 />

1.4.2.4.2 Das Interface Runnable<br />

Nicht immer ist es möglich, e<strong>in</strong>e Klasse, die als Thread laufen soll, von Thread<br />

abzuleiten. E<strong>in</strong> Thread kann <strong>de</strong>shalb auch über Implementierung <strong>de</strong>s Interface<br />

Runnable erzeugt wer<strong>de</strong>n. Runnable enthält nur e<strong>in</strong>e e<strong>in</strong>zige Deklaration nämlich<br />

die <strong>de</strong>r Metho<strong>de</strong> run:<br />

public <strong>in</strong>terface Runnable<br />

{<br />

public abstract void run();<br />

}<br />

Implementierung von Runnable: Je<strong>de</strong> Klasse, <strong>de</strong>ren Instanzen als Thread laufen,<br />

muß das Interface Runnable implementieren 116 . E<strong>in</strong>e nicht von Thread abgeleitete<br />

Instanz kann nach folgen<strong>de</strong>n Implementierungsschritten als Thread laufen:<br />

- Erzeugen e<strong>in</strong>es neuen Thread-Objekts<br />

- Übergabe <strong>de</strong>s Objekts, das parallel ausgeführt wer<strong>de</strong>n soll, an <strong>de</strong>n Konstruktor<br />

- Aufruf <strong>de</strong>r Metho<strong>de</strong> start() <strong>de</strong>s Thread-Objekts<br />

Über start() startet das Thread-Objekt die run-Meto<strong>de</strong> <strong>de</strong>s übergebenen Objekts<br />

(das sie durch die Übergabe an <strong>de</strong>n Konstruktor kennt). Da dieses Objekt das<br />

Interface Runnable implementiert, ist garantiert, daß e<strong>in</strong>e geeignete Metho<strong>de</strong> run<br />

zur Verfügung steht.<br />

Bsp. 117 : ThreadDemo<br />

Thread<br />

MAX_PRIORITY<br />

….<br />

Runnable<br />

><br />

sleep()<br />

run()<br />

start()<br />

jo<strong>in</strong>()<br />

….<br />

ErsterThread<br />

ZweiterThread<br />

run() runs run()<br />

class ErsterThread extends Thread<br />

{<br />

public void run()<br />

{<br />

for (<strong>in</strong>t i = 0; i < 10; i++)<br />

try {<br />

Thread.sleep( Math.round(1000 * Math.random()) );<br />

System.out.pr<strong>in</strong>tln(this + " " + i);<br />

}<br />

116 sogar die Klasse Thread selbst<br />

117 vgl. pr14240<br />

102

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!