16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

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

stellt <strong>de</strong>n Status <strong>de</strong>s Abbruchflag beim aktuellen Thread fest und setzt zusätzlich das<br />

Abbruchflag auf se<strong>in</strong>en Initialisierungswert zurück.<br />

Bsp. 114 :<br />

public class PR14240 extends Thread<br />

{<br />

<strong>in</strong>t zaehler = 0;<br />

public void run()<br />

{<br />

while (true)<br />

{<br />

if (isInterrupted())<br />

{<br />

break;<br />

}<br />

pr<strong>in</strong>tL<strong>in</strong>e(++zaehler);<br />

}<br />

}<br />

private void pr<strong>in</strong>tL<strong>in</strong>e(<strong>in</strong>t cnt)<br />

{<br />

//Zeile ausgeben<br />

System.out.pr<strong>in</strong>t(zaehler + ": ");<br />

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

{<br />

System.out.pr<strong>in</strong>t(i == zaehler % 30 ? "* " : ". ");<br />

}<br />

System.out.pr<strong>in</strong>tln();<br />

// 100 ms. warten<br />

try {<br />

Thread.sleep(100);<br />

}<br />

catch (InterruptedException e)<br />

{<br />

<strong>in</strong>terrupt();<br />

}<br />

}<br />

public static void ma<strong>in</strong>(Str<strong>in</strong>g[] args)<br />

{<br />

PR14240 th = new PR14240();<br />

{<br />

//Thread starten<br />

th.start();<br />

//2 Sekun<strong>de</strong>n warten<br />

try {<br />

Thread.sleep(2000);<br />

}<br />

catch (InterruptedException e) { }<br />

//Thread unterbrechen<br />

th.<strong>in</strong>terrupt();<br />

}<br />

}<br />

}<br />

Das Programm gibt zunächst über e<strong>in</strong>en separaten Thread zunächst Textzeilen aus.<br />

Wahrsche<strong>in</strong>lich erfolgt <strong>de</strong>r Aufruf von <strong>in</strong>terrupt() während <strong>de</strong>s Aufrufs von<br />

sleep(), da die Pause nach <strong>de</strong>r Bildschirmausgabe vermulich länger dauert als die<br />

Bildschirmausgabe. Ist dies <strong>de</strong>r Fall wird sleep() mit e<strong>in</strong>er<br />

InterruptedException abgebrochen. Das Abbruchflag wird zurückgesetzt und<br />

<strong>de</strong>r Aufruf von <strong>in</strong>terrupt() damit wirkungslos. Da aber <strong>in</strong> <strong>de</strong>r catch-Klausel<br />

114 vgl. pr14240<br />

99

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!