Согласно Javadoc Вы упоминалось:
Поток жив, если он был запущен и еще не умер.
Поток «начинается», когда его метод вызывается start()
и «умирает» в конце своего метода run()
, или когда stop()
(теперь устаревшее) вызывается. Итак, да, поток «живой», когда его метод run()
все еще продолжается, но он также «жив» в окне времени между вызовом start()
и неявным вызовом метода run()
JVM.
Вы также можете проверить Thread.getState()
и interesting information about Thread States, предложенный @Marou Maroun.
Я также следую его предложению, предупреждая вас, что нить может закончиться преждевременно в случае выброса исключения, которое распространяется за пределы run
. В этом случае нить не будет живой.
EDIT: Как было предложено @zakkak, нить можно считать живой, хотя метод run()
еще не начался. Если вы хотите иметь правильный контроль, когда он будет вызываться, используйте ScheduledExecutorService
, в частности метод schedule()
, который дает вам более точное расписание выполнения.
Ответ есть: «* Нить живая, если она была запущена и еще не умерла. *». Эта ссылка также вам поможет: http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/states.html – Maroun
Спасибо за эту диаграмму. Это было очень полезно. –