Это довольно простой вопрос о лексике потоков Java.
Я не вижу возможных дубликатов, но может быть.
Что означает слово alive в документации Oracles?
Это когда метод run()
еще не завершен или это какой-либо другой параметр?
Это довольно простой вопрос о лексике потоков Java.
Я не вижу возможных дубликатов, но может быть.
Что означает слово alive в документации Oracles?
Это когда метод run()
еще не завершен или это какой-либо другой параметр?
В соответствии с Javadoc вы упомянули:
Нить жива, если она была запущена и еще не умерла.
Поток запускается, когда его метод start()
вызывается и "умирает" в конце его метода run()
или когда вызывается stop()
(теперь устаревший). Итак, да, поток "живой", когда его метод run()
все еще продолжается, но он также "жив" в временном окне между вызовом start()
и неявным вызовом метода run()
с помощью JVM.
Вы также можете проверить Thread.getState()
и интересную информацию о странах нитей, предложенных @Marou Maroun.
Я также следую его предложению, предупреждая вас, что Thread может закончиться преждевременно в случае выброса исключения, которое распространяется за пределы run
. В этом случае нить не будет живой.
EDIT: Как было предложено @zakkak, поток можно считать живым, хотя метод run()
еще не начался. Если вы хотите иметь правильный контроль над тем, когда он будет вызываться, используйте ScheduledExecutorService
, в частности schedule()
, который дает вам более точное расписание выполнения.
Нить жива, когда она находится в новом состоянии /Running/wait. По существу, может быть запущен метод run или нет
Нить жива, когда на него вызывается метод start
и до его смерти. Он может переместиться в состояние ожидания до того, как он будет мертв, даже если он находится в состоянии ожидания, он все еще жив.
От того, чтобы быть мертвым, он может перейти из состояния runnable
в состояние waiting
.
Thread оживает после возвращения start() и до тех пор, пока run() не вернется в JVM.
Поток считается живым с момента создания объекта Thread и запуска его до тех пор, пока он не завершит метод запуска или не умрет. Говорят, что он находится в живом состоянии, даже если он находится в состоянии ожидания, работы или сна.
Тема "Живой" означает, что поток все еще запущен.
Да, вы можете сказать, что метод run()
выполняется для Живого потока.
Кроме того, метод isAlive() используется, чтобы узнать, продолжает ли Thread.
final boolean isAlive()
Метод isAlive()
возвращает true, если поток, по которому он вызывается, все еще работает. В противном случае он возвращает false.
Нить жива, когда она находится в состоянии New или в состоянии Running/Wait. И мы также можем сказать, что до тех пор, пока поток не будет умер, он будет сохранен в памяти.