2012-04-07 2 views
2

Я хочу изящно отключить потоки. Я видел много кодов в Интернете и имею запрос здесь. Я думаю, что есть два подхода к выключению.Прерывание потока в Java

  1. use boolean flag. После того, как флаг chnages мы можем разбить код там в методе run.
  2. использование метода прерывания.

Мой вопрос, почему его избегают использовать логический флаг для изящного отключения потоков, Когда я запускал программу-образец, он прошел хорошо.

ответ

5

Там нет ничего плохого с boolean флагом, однако:

  • вы должны помнить о синхронизации/видимости (по крайней мере, поставить volatile на флаге)

  • почему добавив дополнительный флаг, когда один (interrupted)?

  • Другие библиотеки/контейнеры могут попытаться прервать поток (в конце концов, они не знают о вашем флаге!), Так что вы все еще должны поддерживать InterruptedException и/или isInterrupted() флаг

  • прерывающий нить может также прерывает вызовы ввода/вывода и Thread.sleep(). Ваш пользовательский флаг не может

Смежные вопросы