![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Cosmologist |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 13.8.2006 Репутация: нет Всего: 0 |
Заметил такую штуку — когда пытаюсь остановить Thread (с помощью stop() или interrupt()) или AsyncTask (c помощью cancel(true)), код в потоке все равно продолжает выполняться!!!
Гугл предлагает решения типа — ставить флаг и в потоке постоянно этот флаг проверять, непонятно что делать если у меня выполняется одна долгая операция, код которой у меня отсутствует. Действительно нельзя полностью остановить выполнение потока или это я что-то упустил? |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Нельзя. Ни полностью, ни частично. Если у вас нет кода и вы не можете вставить туда свои проверки условия остановки, то никак. Если только поток не ожидает ввода-вывода. В этом случае сработает interrupt(), потому что в стандартных классах уже реализована проверка флага interrupted. Если операция может выполняться настолько долго, что результат уже становится не нужен, то ее надо выполнять в отдельном потоке, чтобы не блокировать выполнение всей программы.
|
|||
|
||||
Cosmologist |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 13.8.2006 Репутация: нет Всего: 0 |
COVD, спасибо, в процессе еще нашел обсуждение этой проблемы на хабре - http://habrahabr.ru/blogs/java/133413/
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |