В Java, когда мы создаем объект нитиЧто такое LifeCycle Thread в Java?
Thread t1 = new Thread(Runnable object);
t1.start();
Каковы различные этапы жизненного цикла резьбы t1
и после выполнения run()
будет состояние t1
?
В Java, когда мы создаем объект нитиЧто такое LifeCycle Thread в Java?
Thread t1 = new Thread(Runnable object);
t1.start();
Каковы различные этапы жизненного цикла резьбы t1
и после выполнения run()
будет состояние t1
?
Штаты Тема:
Нить может иметь Ожидание Timed Ожидание и заблокированный Статус
Для Дальнейшей информации смотрите здесь: https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.State.html
Нити проходит через различные этапы ее жизненный цикл. Например, поток рождается, запускается, запускается и затем умирает. Следующая диаграмма показывает полный жизненный цикл нити.
Java темы Выше упомянутые этапы описаны здесь:
New:
Новый поток начинает свой жизненный цикл в новом государстве. Он остается в этом состоянии, пока программа не запустит нить. Он также упоминается как рожденная нить.
Runnable
: После запуска новорожденной нити поток становится управляемым. Поток в этом состоянии считается выполняющим его задачу.
Waiting:
Иногда поток переходит в состояние ожидания, пока поток ожидает другого потока для выполнения задачи. Поток переходит в состояние запуска только тогда, когда другой поток сигнализирует, что поток ожидания продолжает выполняться.
Timed waiting:
Выполняемая нить может входить в состояние ожидания по времени в течение заданного интервала времени. Поток в этом состоянии переходит в состояние запуска при истечении этого интервала времени или когда происходит событие, которое оно ожидает.
Terminated (Dead)
: Выполняемая нить входит в законченное состояние, когда она завершает свою задачу или иным образом завершается.
Источник: http://www.tutorialspoint.com/java/java_multithreading.htm
RUNNABLE и RUNNING - это разные состояния в большинстве операционных систем, но в '' java.lang.Thread.State'' нет 'RUNNING'. Существует только 'RUNNABLE'. Поток Java в состоянии «RUNNABLE» может быть фактически запущен на процессоре, или он может ждать, пока процессор начнет работать, но он ничего не ждет. –
Итак, в соответствии с графикой, «ожидающая» нить никогда не может снова «работать»? Это не соответствует моему опыту ... – Holger
убедитесь, что 'new Thread();' не создает новый поток, он просто создает простой объект. – UnKnown
Поток может находиться в одном из следующих 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, чтобы понять различные состояния в этой диаграмме
В диаграмме выше, за исключением RUNNING
(которое было показано по кругу), все другие прямоугольные блоки обозначают различные thread states
.
Показывает ни одного исследовательского усилия: найдите «жизненный цикл Java-потока» в поисковой системе по вашему выбору. –
Я бы порекомендовал форматировать ваш код, если вы хотите оставить этот вопрос открытым. В противном случае я бы опубликовал «Документацию по Java Java» и прочитал это. – Stormie
https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html –