убивает запущенный поток в Java? - PullRequest
8 голосов
/ 28 июня 2010

Как убить работающий поток в Java

Ответы [ 3 ]

12 голосов
/ 28 июня 2010

Вы можете попросить прерывание потока, вызвав Thread.interrupt()

Обратите внимание, что существует несколько других методов с похожей семантикой - stop() и destroy() - но они устарели , поскольку они небезопасны . Не поддавайтесь искушению использовать их.

6 голосов
/ 28 июня 2010

Как сказал Божо, Thread.interrupt () - это общий и правильный способ сделать это.Но помните, что для взаимодействия требуется нить;Очень легко реализовать поток, который игнорирует запросы прерывания.

Для того, чтобы кусок кода был таким образом прерываемым, он не должен игнорировать любое InterruptedException, и он должен проверять флаг прерывания на каждой итерации цикла (используя Thread.currentThread (). IsInterrupted ()),Кроме того, он не должен иметь никаких непрерывных операций блокировки.Если такие операции существуют (например, ожидание в сокете), вам потребуется более конкретная реализация прерывания (например, закрытие сокета).

2 голосов
/ 28 июня 2010

В ближайшее время вам нужно Thread.interrupt()

Подробнее см. В разделе How do I stop a thread that waits for long periods (e.g., for input) этой статьи Почему Thread.stop, Thread.suspend, Thread.resume и Runtime.runFinalizersOnExit устарели? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...