| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Самоубийство потока... |
| Автор: ShurikA 14.11.2006, 05:23 |
| Может ли поток убить сам себя? и как? |
| Автор: skhilkov 14.11.2006, 07:45 |
| Приходит в голову break из цикла ...... |
| Автор: ShurikA 14.11.2006, 08:03 | ||
Из какого цыкла? Поток не цыкл... |
| Автор: skhilkov 14.11.2006, 08:09 |
| поток есть пока не выйдет из run(), обычно run() организован как цикл(либо бесонечный, либо выходящий по условию). Поэтому при выходе из цикла поток прекратит существование. |
| Автор: ShurikA 14.11.2006, 08:39 |
| Ты имеешь в виду что окончание run() равносильно Thread.Kill()? |
| Автор: dumb 14.11.2006, 08:50 |
примерно так же, как если бы ты, выпив, вышел довольный из бара на улицу, или же тебя оттуда жестко выпинали охранники "на середине кружечки"... |
| Автор: skhilkov 14.11.2006, 08:57 |
| ага, либо тебя убили, либо ты своей смертью умер.... но результат один ))) |
| Автор: Sherst 14.11.2006, 11:02 | ||
| Поток прекратит работу, когда метод run() возвратит управление, а каких-то средств по принудительному завершению выполнения потока нет. Можно конечно попытаться прервать поток с помощью метода interrupt но он всего лишь запрашивает возможность о прекращении выполнения потока. Когда вызывается данный метод для блокирующего объекта то работа методов wait() и sleep() завершается и генерится исключительная ситуация InterruptedException:
|
| Автор: s8e8r8g8e 14.11.2006, 15:29 |
| ага.. только более универсально return из run() делать, а не break, тогда вроде пофиг какая реализация этого run() а вобще можно и о некоторых "устаревших" методах вспомнить убивающих поток, но это извращение т.к. сам поток может сделать и то что выше написано не прибегая к небезопасным вызовам. |
| Автор: djGri 15.11.2006, 01:54 | ||
Почему не сделать так? (алгоритм и без синхронизации)
|
| Автор: ShurikA 13.12.2006, 19:25 |
| То что я сделал: - ловлю Exception в нутри потока - при этом каждый loop в нутри этого потока проверяет определённый обьект. - когда мне нужно убить поток - обнуляю обьект. - в catch сидит return. и усё. |
| Автор: powerOn 13.12.2006, 19:49 | ||
"Месье знает толк в извращениях!" |
| Автор: ShurikA 15.12.2006, 03:12 |
по какой то причине break не срабатывает. |
| Автор: powerOn 15.12.2006, 11:15 |
Как так не срабатывает? Что на отладчике происходит? Код покажи. |