Wann lebt ein Java-Thread?

Lesezeit: 4 Minuten

Wann lebt ein Java Thread
Einar Sundgren

Dies ist eine ziemlich grundlegende Frage zum Vokabular von Java-Threads.

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

Was macht das Wort lebendig siehe in der Oracles-Dokumentation?

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

  • Die Antwort ist da: “Ein Thread ist lebendig, wenn er gestartet wurde und noch nicht gestorben ist.“. Dieser Link sollte dir auch helfen: journals.ecs.soton.ac.uk/java/tutorial/java/threads/states.html

    – Maroun

    25. Juni ’13 um 9:10


  • Danke für dieses Diagramm. Es war wirklich hilfreich.

    – Einar Sundgren

    25. Juni ’13 um 9:20

Wann lebt ein Java Thread
Matthieu

Laut dem Javadoc, das Sie erwähnt haben:

Ein Thread ist lebendig, wenn er gestartet wurde und noch nicht gestorben ist.

Ein Thread “beginnt”, wenn es start() Methode wird aufgerufen und “stirbt” am Ende ihrer run() Methode, oder wann stop() (jetzt veraltet) aufgerufen wird. Also ja, ein Thread ist “lebendig”, wenn er run() -Methode ist noch im Gange, aber sie ist auch im Zeitfenster zwischen dem Aufruf von “lebendig”. start() und der implizite Aufruf des run() Methode durch die JVM.

Sie können auch überprüfen, Thread.getState() und interessante Informationen zu Thread-Zuständen vorgeschlagen von @Marou Maroun.

Ich folge auch seinem Vorschlag, Sie zu warnen, dass ein Thread vorzeitig beendet werden kann, falls eine Ausnahme ausgelöst wird, die sich darüber hinaus ausbreitet run. Der Thread wäre in diesem Fall nicht mehr lebendig.

BEARBEITEN: Wie von @zakkak vorgeschlagen, kann der Thread als lebendig angesehen werden, obwohl die run() Methode noch nicht gestartet. Falls Sie die richtige Kontrolle darüber haben möchten, wann es aufgerufen wird, verwenden Sie die ScheduledExecutorService, speziell die schedule() Methode, die Ihnen einen genaueren Ausführungsplan gibt.

  • Ich habe meine Antwort aktualisiert, um Ihren Link und Ihren Kommentar aufzunehmen. Jetzt gehört es dir zur Hälfte 🙂

    – Matthieu

    25. Juni ’13 um 9:29

  • Es gehört alles dir 🙂 Gut erklärte Antwort.

    – Maroun

    25. Juni ’13 um 9:31

  • Beachte das einfach Thread#stop ist nichts anderes als das asynchrone Auslösen einer Ausnahme. Wenn diese Ausnahme nicht zum Abbruch der run-Methode führt, lebt der Thread weiter.

    – Marko Topolnik

    25. Juni ’13 um 9:38

  • @MarounMaroun Ich habe dies vor kurzem erkannt und das Wort jetzt verbreitet 🙂 Die Dokumentation gibt es an, aber auf eine so umständliche Weise, dass es so klingt, als würde die Ausnahme ohne Chance geworfen, sie abzufangen.

    – Marko Topolnik

    25. Juni ’13 um 9:41

  • @zakkak noch, Sie müssen einige Annahmen treffen: wie das Javadoc sagt, sobald Sie angerufen haben start(), müssen Sie davon ausgehen, dass Ihr Thread gestartet wurde. Wenn Sie eine präzise Kontrolle auf Ihrem . benötigen run(), du solltest a . verwenden Runnable in einem ScheduledExecutorService, oder ein Betriebssystem mit einem Echtzeit-Scheduler (mit der entsprechenden JVM). Ich werde sehen, wie ich meine Antwort vor diesem Hintergrund aktualisieren kann.

    – Matthieu

    6. Februar ’16 um 19:44 Uhr

Thread ist lebendig, nachdem start() zurückgegeben wurde und bis run() zu JVM zurückkehrt.

  • perfekte Antwort!

    – ula

    14. September ’18 um 15:49

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

  • Sie müssen start() der Thread, damit er lebendig ist: MyThread t = new MyThread(); t.isAlive(); gibt ‘falsch’ zurück

    – Matthieu

    25. Juni ’13 um 9:22


1641966502 26 Wann lebt ein Java Thread
Prasad Kharkar

Ein Faden lebt, wenn die start Methode aufgerufen wird und bevor sie tot ist. Es kann mehrmals in den Wartezustand wechseln, bevor es tot ist, selbst wenn es sich im Wartezustand befindet, ist es noch am Leben.

Vom Lebendigen zum Totsein kann es sich bewegen von runnable Zustand zu waiting Zustand.

1641966502 838 Wann lebt ein Java Thread
Nargis

Thread ist “Alive” bedeutet, dass Thread noch läuft.

Ja, das kann man sagen run() -Methode für den Alive-Thread ausgeführt wird.

Darüber hinaus wird die Methode isAlive() verwendet, um zu wissen, ob der Thread noch läuft.

final boolean isAlive()

Der isAlive() -Methode gibt true zurück, wenn der Thread, für den sie aufgerufen wird, noch ausgeführt wird. Andernfalls wird false zurückgegeben.

1641966503 297 Wann lebt ein Java Thread
Manish Doshi

Ein Thread ist lebendig, wenn er sich im New State oder im Running/Wait State befindet. Und wir können auch feststellen, dass er im Speicher lebt, bis er gestorben ist.

1641966503 427 Wann lebt ein Java Thread
nevets1219

Ein Thread gilt ab dem Zeitpunkt als aktiv, an dem Sie ein Thread-Objekt erstellen und starten, bis er die Methode run abschließt oder stirbt. Es wird gesagt, dass es sich im lebendigen Zustand befindet, selbst wenn es sich im Leerlauf-, Lauf- oder Schlafzustand befindet.

.

421940cookie-checkWann lebt ein Java-Thread?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy