уничтожение рабочего потока в Java?

Как уничтожить рабочий поток в Java

8
задан JavaUser 28 June 2010 в 07:30
поделиться

3 ответа

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

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

12
ответ дан 5 December 2019 в 08:22
поделиться

Коротко вам нужно Thread.interrupt()

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

2
ответ дан 5 December 2019 в 08:22
поделиться

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

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

6
ответ дан 5 December 2019 в 08:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: