PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java Threads


SGT.Hawk
2005-01-27, 23:40:09
Hallo ich bin es mal wieder.Ich habe eine Frage zu den zwei Metrhoden aus der Thread Klasse.Es gibt zwei Methode,um den Thread zu unterbrechen oder zu überperüfen.Einmal die ObjektMethode isInterrupted()und Thread.interrupted.
Zwar weiss ich aus der Doku,was sie bedeuten,verstehen tue ich sie aber nicht.Ich weiss,dass bei der Objektmethode ein Flag gesetzt wird,um eine Unterbrechung zu signalisieren,bei der Klassenmethode auch,nur der Flag wird wieder zurückgesetzt,aber was ist genau der Unterschied und wo kann ich was gebrauchen?

Aqualon
2005-01-28, 00:02:12
Also mit isInterrupted() kann ein Thread abfragen, ob er noch läuft oder ob das Unterbrechungsflag gesetzt ist. Falls es gesetzt ist, kann der Thread so programmiert werden, dass er seine Arbeit unterbricht (Bsp. siehe hier (http://www.galileocomputing.de/openbook/javainsel4/javainsel_09_002.htm#Rxx365java09002040002CF1F02E10A)).

Für was die Methode interrupted() gut ist, habe ich auch kein Beispiel beim googlen gefunden. Meine Erklärung wäre, dass man damit überprüft, ob ein Thread unterbrochen ist und gleichzeitig das Interrupted-Flag zurücksetzt, ohne dies explizit machen zu müssen.

Aqua

HellHorse
2005-01-28, 08:14:02
Wenn du nicht weisst, was eine Methode macht schlag (http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html#isInterrupted()) nach (http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html#interrupted()).

Aus der Beschreibung geht hervor, dass Thread.interrupted() das gleiche macht wie:
return Thread.currentThread().isInterrupted()
Wenn du ganz sicher sein willst, schaust du dir die Sourcen an und wirst feststellen, dass genau das der Fall ist.

Und interrupt() unterbricht einen Thread nicht. Ganz im Gegenteil, es weckt ihn auf, wenn er blockiert.

SGT.Hawk
2005-01-28, 13:46:26
In der Source habe ich nachgeschaut.Die isInterrupted() is eine nativ Methode,also kann ich es vergessen,aber hat sich alles geklärt jetzt.