2016-04-05 2 views
-2

in Java, wenn wir ein Objekt erstellen FadenWas ist der LifeCycle von Thread in Java?

Thread t1 = new Thread(Runnable object); 
t1.start(); 

Was die verschiedenen Phasen des Lebenszyklus von Faden t1 und nach der Ausführung von run() wird der Zustand der t1 sind?

+0

Zeigt keinen Forschungsaufwand: Suchen Sie in einer Suchmaschine Ihrer Wahl nach "Java Thread Life Cycle". –

+0

Ich würde empfehlen, Ihren Code zu formatieren, wenn Sie diese Frage offen lassen möchten. Sonst würde ich "Java Thread Dokumentation" googlen und das durchlesen. – Stormie

+0

https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html –

Antwort

8

Ein Faden durchläuft verschiedene Phasen in ihrem Lebenszyklus. Zum Beispiel wird ein Thread geboren, gestartet, ausgeführt und stirbt dann. Das folgende Diagramm zeigt den kompletten Lebenszyklus eines Threads.

enter image description here

Java-Thread oben genannten Stufen werden hier erklärt:

New: Ein neuer Thread beginnt seinen Lebenszyklus im Neuzustand. Es bleibt in diesem Zustand, bis das Programm den Thread startet. Es wird auch als ein geborener Thread bezeichnet.

Runnable: Nachdem ein neu geborener Thread gestartet wurde, wird der Thread ausführbar. Ein Thread in diesem Zustand wird als seine Task ausführend betrachtet.

Waiting: Manchmal wechselt ein Thread in den Wartestatus, während der Thread darauf wartet, dass ein anderer Thread eine Aufgabe ausführt. Ein Thread wechselt nur dann in den ausführbaren Status zurück, wenn ein anderer Thread dem wartenden Thread die Ausführung signalisiert.

Timed waiting: Ein lauffähiger Thread kann für einen bestimmten Zeitraum in den zeitgesteuerten Wartezustand eintreten. Ein Thread in diesem Zustand wechselt zurück in den ausführbaren Zustand, wenn dieses Zeitintervall abläuft oder wenn das Ereignis, auf das gewartet wird, auftritt.

Terminated (Dead): Ein ausführbarer Thread tritt in den abgeschlossenen Zustand ein, wenn er seine Aufgabe beendet oder anderweitig beendet wird.

Quelle: http://www.tutorialspoint.com/java/java_multithreading.htm

+2

RUNNABLE und RUNNING sind in den meisten Betriebssystemen unterschiedliche Zustände, aber in der 'java.lang.Thread.State'-Enumeration gibt es kein 'RUNNING'. Es gibt nur "RUNNABLE". Ein Java-Thread im Zustand 'RUNNABLE' könnte entweder tatsächlich auf einer CPU ausgeführt werden oder auf eine CPU warten, auf die er nicht ausgeführt werden kann. –

+0

Also, nach der Grafik kann ein "wartender" Thread nie wieder "laufen"? Das passt nicht zu meiner Erfahrung ... – Holger

+0

stelle sicher, dass 'new Thread();' keinen neuen Thread erstellt, sondern einfach ein einfaches Objekt erstellt. – UnKnown

5

Ein Thread in einem der folgenden State sein kann:

NEW : Ein Thread, der noch nicht begonnen hat in diesem Zustand befindet.

RUNNABLE : Ein Thread, der in der Java Virtual Machine ausgeführt wird, befindet sich in diesem Status.

BLOCKED: Ein Thread im gesperrten Zustand ist für einen Monitor Sperre wartet ein synchronisierten Block/Verfahren zur Eingabe oder ein synchronized Block/Verfahrens nach dem Aufruf Object.wait erneut einzugeben.

WAITING: Ein Thread, der unbegrenzt darauf wartet, dass ein anderer Thread eine bestimmte Aktion ausführt, befindet sich in diesem Status.

Ein Thread ist in dem Wartezustand aufgrund einer der folgenden Methoden zu nennen:

Object.wait with no timeout 
Thread.join with no timeout 
LockSupport.park 

TIMED_WAITING: einen Thread, der für einen anderen Thread wartet, eine Aktion auszuführen, bis zu einem festgelegten Wartezeit in dieser ist Zustand.

Ein Thread ist in dem zeitgesteuerten Wartezustand aufgrund eines der folgenden Verfahren mit einer spezifizierten positiven Wartezeit zu nennen:

Thread.sleep 
Object.wait with timeout 
Thread.join with timeout 
LockSupport.parkNanos 
LockSupport.parkUntil 

TERMINATED: ein Thread, der ausgetreten ist, in diesem Zustand befindet.

Siehe diese article durch pramodbablad verschiedene Zustände in diesem Diagramm

enter image description here

In obiger Diagramm zu verstehen, mit der Ausnahme RUNNING (die in einem Kreis dargestellt ist), wird alle andere rechteckigen Blöcke verschiedene thread states bezeichnet.

Verwandte Themen