2016-04-05 1 views
-2

В Java, когда мы создаем объект нитиЧто такое LifeCycle Thread в Java?

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

Каковы различные этапы жизненного цикла резьбы t1 и после выполнения run() будет состояние t1?

+0

Показывает ни одного исследовательского усилия: найдите «жизненный цикл Java-потока» в поисковой системе по вашему выбору. –

+0

Я бы порекомендовал форматировать ваш код, если вы хотите оставить этот вопрос открытым. В противном случае я бы опубликовал «Документацию по Java Java» и прочитал это. – Stormie

+0

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

ответ

0

Штаты Тема:

  1. Новые - Созданный, но не выполнил
  2. Runnable - была достигнута Конец Scope Run Method - Запуск
  3. Terminated.

Нить может иметь Ожидание Timed Ожидание и заблокированный Статус

Для Дальнейшей информации смотрите здесь: https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.State.html

8

Нити проходит через различные этапы ее жизненный цикл. Например, поток рождается, запускается, запускается и затем умирает. Следующая диаграмма показывает полный жизненный цикл нити.

enter image description here

Java темы Выше упомянутые этапы описаны здесь:

New: Новый поток начинает свой жизненный цикл в новом государстве. Он остается в этом состоянии, пока программа не запустит нить. Он также упоминается как рожденная нить.

Runnable: После запуска новорожденной нити поток становится управляемым. Поток в этом состоянии считается выполняющим его задачу.

Waiting: Иногда поток переходит в состояние ожидания, пока поток ожидает другого потока для выполнения задачи. Поток переходит в состояние запуска только тогда, когда другой поток сигнализирует, что поток ожидания продолжает выполняться.

Timed waiting: Выполняемая нить может входить в состояние ожидания по времени в течение заданного интервала времени. Поток в этом состоянии переходит в состояние запуска при истечении этого интервала времени или когда происходит событие, которое оно ожидает.

Terminated (Dead): Выполняемая нить входит в законченное состояние, когда она завершает свою задачу или иным образом завершается.

Источник: http://www.tutorialspoint.com/java/java_multithreading.htm

+2

RUNNABLE и RUNNING - это разные состояния в большинстве операционных систем, но в '' java.lang.Thread.State'' нет 'RUNNING'. Существует только 'RUNNABLE'. Поток Java в состоянии «RUNNABLE» может быть фактически запущен на процессоре, или он может ждать, пока процессор начнет работать, но он ничего не ждет. –

+0

Итак, в соответствии с графикой, «ожидающая» нить никогда не может снова «работать»? Это не соответствует моему опыту ... – Holger

+0

убедитесь, что 'new Thread();' не создает новый поток, он просто создает простой объект. – UnKnown

5

Поток может находиться в одном из следующих State:

NEW : Поток, который еще не начался в этом состоянии.

RUNNABLE : Нить, выполняемая на виртуальной машине Java, находится в этом состоянии.

BLOCKED: Потока в заблокированном состоянии ожидает блокировки монитора для входа синхронизированного блока/или метода Reenter в synchronized блоке/метод после вызова Object.wait.

WAITING: Поток, который ожидает неопределенный срок для другого потока для выполнения определенного действия, находится в этом состоянии.

Поток находится в состоянии ожидания из-за вызова одного из следующих методов:

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

TIMED_WAITING: поток, который ждет другого потока, чтобы выполнить действие до заданное время ожидания в этом государство.

Поток находится в состоянии ожидания таймерного из-за вызовом одного из следующих методов с заданным положительным временем ожидания:

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

TERMINATED: Потока, который вышел в этом состоянии.

Обратитесь к этому article от pramodbablad, чтобы понять различные состояния в этой диаграмме

enter image description here

В диаграмме выше, за исключением RUNNING (которое было показано по кругу), все другие прямоугольные блоки обозначают различные thread states.

 Смежные вопросы

  • Нет связанных вопросов^_^