Главная » Java » Завершение выполнения потока Java

0

О потоке, приступившем к работе, говорят как о действующем (alive), и Метод isAlive такого потока возвращает значение true. Поток продолжает оставаться действующим до тех пор, пока не будет остановлен в результате возникновения одного из трех возможных событий:

·      метод run завершил выполнение нормальным образом;

·      работа метода run прервана;

·      вызван метод destroy объекта потока.

Возврат из метода run посредством return или в результате естественного завершения кода – это нормальный способ окончания выполнения потока. Каждый поток решает определенную задачу, и когда решение получено, работа потока должна быть прекращена. Если, однако, в процессе работы потока возникает какая-нибудь проблема, приводящая к выбрасыванию исключения, которое не подвергается обработке, выполнение потока также завершается (мы обсудим такую ситуацию позже, в разделе 10.12 на странице 281). К моменту прекращения работы потока он освобождает все блокировки, которыми владеет, поскольку при выходе из run выполнение любого синхронизированного кода должно быть завершено.

Вызов метода destroy объекта потока – это совершенно радикальный и непоправимый шаг. В этом случае поток "умирает" внезапно, независимо от того, что именно он выполняет в данный момент, и не освобождает ни одной из захваченных блокировок, поэтому остальные потоки могут остаться в состоянии бесконечного ожидания. Метод destroy относится к разряду последних решительных мер, когда способы взаимно корректного завершения работы потоков (мы расскажем о них ниже) оказываются недейственными. Многими системами, однако, метод destroy не поддерживается, и его вызов влечет выбрасывание исключения типа NoSuchMethodError, способного остановить работу потока-инициатора, а не того потока, завершение которого предусматривалось.

Выполнение потока может быть прервано также в том случае, когда завершает работу все приложение целиком (подробнее об этом – в разделе 10.9 на странице 275).

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии