2013-06-25 17 views
13

Dies ist eine ziemlich grundlegende Frage über das Vokabular von Java-Threads.Wann ist ein Java-Thread am Leben?

Ich kann keine möglichen Duplikate sehen, aber es könnte sein.

Was bedeutet das Wort alive in Orakel Dokumentation?

Ist es, wenn die Methode run() noch nicht abgeschlossen ist oder ist es ein anderer Parameter?

+11

Die Antwort ist da: "* Ein Thread lebt, wenn er gestartet wurde und noch nicht gestorben ist. *". Dieser Link sollte Ihnen auch helfen: http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/states.html – Maroun

+1

Danke für dieses Diagramm. Es war sehr hilfreich. –

Antwort

23

Nach dem Javadoc Sie erwähnen:

Ein Thread am Leben ist, wenn es gestartet wurde und noch nicht gestorben.

Ein Thread „beginnt“, wenn seine start() Methode aufgerufen wird und „stirbt“ am Ende seines run() Methode oder wenn stop() (nun veraltet) aufgerufen wird. Also ja, ein Thread ist "am Leben", wenn seine run() Methode noch läuft, aber es ist auch "lebendig" in dem Zeitfenster zwischen dem Aufruf von start() und dem impliziten Aufruf der run() Methode durch die JVM.

Sie können auch die von @ Marou Maroun vorgeschlagenen Thread.getState() und interesting information about Thread States überprüfen.

Ich folge auch seinem Vorschlag, der Sie warnt, dass ein Thread vorzeitig enden kann, falls eine Ausnahme ausgelöst wird, die sich über run hinaus ausbreitet. Der Thread wäre in diesem Fall nicht mehr am Leben.

BEARBEITEN: Wie von @ Zakkak vorgeschlagen, kann der Thread als lebendig betrachtet werden, obwohl die Methode run() noch nicht gestartet wurde. Wenn Sie eine ordnungsgemäße Kontrolle darüber haben wollen, wann es aufgerufen wird, verwenden Sie die , speziell die schedule() Methode, die Ihnen einen präziseren Ausführungsplan gibt.

+0

Ich bemerkte, dass Sie es hinzugefügt haben, löschte ich meinen Kommentar. Sie sollten auch beachten, dass eine Ausnahme ausgelöst werden und den Thread töten könnte. – Maroun

+1

Ich habe meine Antwort aktualisiert, um Ihren Link und Ihren Kommentar hinzuzufügen. Es ist jetzt deine Hälfte :) – Matthieu

+4

Es ist alles deins :) Gut erklärt Antwort. – Maroun

1

Ein Thread ist am Leben, wenn die Methode start aufgerufen wird und bevor er inaktiv ist. Es kann sich mehrmals in den Wartezustand bewegen, bevor es tot ist, selbst wenn es im Wartezustand ist, in dem es noch lebt.

Von lebendig zu tot zu sein, kann es von runnable Zustand zu waiting Zustand wechseln.

2

Ein Thread ist aktiv, wenn er sich im neuen/Running/wait-Status befindet. Im Wesentlichen kann die run-Methode ausgeführt werden oder nicht

+0

Sie müssen 'den Thread' starten, damit er am Leben ist: 'MyThread t = new MyThread(); t.isAlive(); 'return 'false' – Matthieu

0

Ein Thread wird von dem Moment an als aktiv betrachtet, in dem Sie ein Thread-Objekt erstellen und es starten, bis es die run-Methode beendet oder stirbt. Es wird gesagt, dass es sich im lebenden Zustand befindet, selbst wenn es sich im Leerlauf, im Lauf- oder Schlafzustand befindet.

0

Thread ist "Alive" bedeutet, dass Thread noch läuft.

Ja, Sie können sagen, dass die run() Methode für den Alive-Thread ausgeführt wird.

Außerdem wird isAlive() -Methode verwendet, um zu wissen, ob der Thread noch läuft.

final boolean isAlive() 

isAlive() Die Methode liefert true zurück, wenn das Gewinde auf dem sie noch genannt wird, ausgeführt wird.Andernfalls wird false zurückgegeben.

+0

was wird isAlive zurückgeben, wenn ein Thread im Wartezustand ist? – divine

0

Ein Thread ist aktiv, wenn er sich im Status "Neu" oder "Running/Wait" befindet. Und wir können auch sagen, dass der Thread bis zum Ende des Threads im Speicher vorhanden ist.

1

Thread ist nach dem Start() zurückgegeben und bis run() kehrt zu JVM zurück.

Verwandte Themen