Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Как по-настоящему остановить выполнение потока? |
Автор: Cosmologist 9.2.2012, 13:15 |
Заметил такую штуку — когда пытаюсь остановить Thread (с помощью stop() или interrupt()) или AsyncTask (c помощью cancel(true)), код в потоке все равно продолжает выполняться!!! Гугл предлагает решения типа — ставить флаг и в потоке постоянно этот флаг проверять, непонятно что делать если у меня выполняется одна долгая операция, код которой у меня отсутствует. Действительно нельзя полностью остановить выполнение потока или это я что-то упустил? |
Автор: COVD 9.2.2012, 14:17 |
Нельзя. Ни полностью, ни частично. Если у вас нет кода и вы не можете вставить туда свои проверки условия остановки, то никак. Если только поток не ожидает ввода-вывода. В этом случае сработает interrupt(), потому что в стандартных классах уже реализована проверка флага interrupted. Если операция может выполняться настолько долго, что результат уже становится не нужен, то ее надо выполнять в отдельном потоке, чтобы не блокировать выполнение всей программы. |
Автор: Cosmologist 9.2.2012, 14:28 |
COVD, спасибо, в процессе еще нашел обсуждение этой проблемы на хабре - http://habrahabr.ru/blogs/java/133413/ |