Подтвердить что ты не робот

Когда поток Java жив?

Это довольно простой вопрос о лексике потоков Java.

Я не вижу возможных дубликатов, но может быть.

Что означает слово alive в документации Oracles?

Это когда метод run() еще не завершен или это какой-либо другой параметр?

4b9b3361

Ответ 1

В соответствии с Javadoc вы упомянули:

Нить жива, если она была запущена и еще не умерла.

Поток запускается, когда его метод start() вызывается и "умирает" в конце его метода run() или когда вызывается stop() (теперь устаревший). Итак, да, поток "живой", когда его метод run() все еще продолжается, но он также "жив" в временном окне между вызовом start() и неявным вызовом метода run() с помощью JVM.

Вы также можете проверить Thread.getState() и интересную информацию о странах нитей, предложенных @Marou Maroun.

Я также следую его предложению, предупреждая вас, что Thread может закончиться преждевременно в случае выброса исключения, которое распространяется за пределы run. В этом случае нить не будет живой.

EDIT: Как было предложено @zakkak, поток можно считать живым, хотя метод run() еще не начался. Если вы хотите иметь правильный контроль над тем, когда он будет вызываться, используйте ScheduledExecutorService, в частности schedule(), который дает вам более точное расписание выполнения.

Ответ 2

Нить жива, когда она находится в новом состоянии /Running/wait. По существу, может быть запущен метод run или нет

Ответ 3

Нить жива, когда на него вызывается метод start и до его смерти. Он может переместиться в состояние ожидания до того, как он будет мертв, даже если он находится в состоянии ожидания, он все еще жив.

От того, чтобы быть мертвым, он может перейти из состояния runnable в состояние waiting.

Ответ 4

Thread оживает после возвращения start() и до тех пор, пока run() не вернется в JVM.

Ответ 5

Поток считается живым с момента создания объекта Thread и запуска его до тех пор, пока он не завершит метод запуска или не умрет. Говорят, что он находится в живом состоянии, даже если он находится в состоянии ожидания, работы или сна.

Ответ 6

Тема "Живой" означает, что поток все еще запущен.

Да, вы можете сказать, что метод run() выполняется для Живого потока.

Кроме того, метод isAlive() используется, чтобы узнать, продолжает ли Thread.

final boolean isAlive()

Метод isAlive() возвращает true, если поток, по которому он вызывается, все еще работает. В противном случае он возвращает false.

Ответ 7

Нить жива, когда она находится в состоянии New или в состоянии Running/Wait. И мы также можем сказать, что до тех пор, пока поток не будет умер, он будет сохранен в памяти.