Встреча с резьбой Java заканчивается следующими тремя способами, и она находится в состоянии смерти после конца
1. Метод run() или call() выполняется, а поток заканчивается нормально;
2. Поток бросает необработанное исключение или ошибку;
3. непосредственно вызовите метод stop() потока, чтобы завершить поток;
ПРИМЕЧАНИЕ. Когда основной поток заканчивается, другие потоки никоим образом не затронуты и не закончится с ним. Как только дочерняя поток запускается, он имеет тот же статус, что и основной поток, и не будет влиять на конец основного потока.
Чтобы проверить, умер ли поток, можно вызвать метод isAlive() объекта потока. Когда поток находится в трех состояниях готовых, запуска и блокировки, метод вернет True; Когда поток находится в новом состоянии и мертвом состоянии, метод вернет ложь.
Тесты выполняются на 1 и 2 ситуациях смерти потока следующим образом.
Код основного потока следующим образом:
public Class Threadtest {public static void main (string [] args) бросает прерывание {thread t = new Thread (new Runtask ()); t.start (); while (true) {thread.sleep (1000); System.out.println ("Основной поток: статус детского потока" + t.isalive ()); }}}Тест 1: после того, как поток нормально заканчивается, iSalive () возвращает false
Записать код выполнения потока, где поток заканчивается нормально:
открытый класс runtask реализует runnable {@Override public void run () {for (int idx = 1; idx <= 10; idx ++) {System.out.println ("subthread: я все еще жив"+idx); try {thread.sleep (3000); } catch (прерванное искусство e) {e.printstacktrace (); }}}} Выходные результаты двух потоков следующие. После того, как нормальное выполнение детского потока будет завершено, используя Thread.isAlive() вернет false.
Основная ветка: состояние детского потока является истинной основной темой: состояние детского потока является истинной подпоточником: я все еще жив. Поток: состояние детского потока является ложным основным потоком: состояние детского потока является ложным основным потоком: состояние детского потока является ложным основным потоком: состояние детского потока является ложным основным потоком: состояние детского потока является ложным основным потоком: Состояние детского потока является ложным основным потоком: Состояние детского потока является ложным основным потоком: состояние детского потока является ложным основным потоком. Состояние детского потока - ложное главное поток: Состояние детского потока является ложноимец: состояние. False Main Thread: Состояние детского потока является ложным основным потоком: состояние детского потока является ложным основным потоком: состояние детского потока является ложным основным потоком: состояние детского потока является ложным основным потоком: состояние детского потока является ложным
Тест 2: после того, как детская нить бросает исключение, поток isalive () возвращает false
Измените код детского потока и добавьте исключения бросков:
открытый класс runtask реализует runnable {@Override public void run () {for (int idx = 1; idx <= 10; idx ++) {System.out.println ("subthread: я все еще жив"+idx); try {thread.sleep (3000); } catch (прерванное искусство e) {e.printstacktrace (); } if (idx == 5) {бросить новое runtimeexception ("I Am Die"); }}}}Выполнить снова и наблюдать вывод:
Основная тема: состояние детского потока является истинным основным потоком: состояние детского потока является истинной. Я умру на runtask.run (runtask.java:15) на java.lang.thread.run (thread.java:662) Основное поток: состояние детской нить - ложное главное поток: состояние детского потока - ложное главное поток: Состояние детского потока является ложным.
Можно видеть, что после того, как исключение будет выброшено, детская нить заканчивается напрямую и становится состоянием флазы;
Суммировать
После того, как поток заканчивается нормально, или нить бросает необработанное исключение, поток становится мертвым, а функция isalive () возвращает false. Хорошо, вышеупомянутое содержимое этой статьи. Я надеюсь, что содержание этой статьи поможет всем, кто учится или работа. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения.