| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > выход из программы в побочной нити |
| Автор: Hogan 14.5.2007, 02:39 |
| Подскажите, как можно завершить приложение, находясь в одной из побочных нитей. Не пойму,как толком флаг применить. |
| Автор: batigoal 14.5.2007, 08:24 |
| Я полагаю, System.exit(0) прервёт выполнение программы из любого потока, но о кошерности такого подхода можно спорить. Другой вариант - в главном потоке циклически проверять какой-нибудь флаг, который и изменять из "побочного". Т.е. главный поток представляет собой цикл while(flag). |
| Автор: chief39 14.5.2007, 10:16 |
| Лучше реализовать одну кошерную точку выхода. Например, в главном треде, реализовать механизм, который в любой ситуации способен разрулить все нити и правильно их завершить, а потом и убиться апстену самостоятельно. Все остальные нити должны идти только через этот выход. Способ уведомления - это уже другой выбор: Можно флаг как batigoal грит - нить говорит что "всё, хватит, наработалась" и не только она одна может так сказать - тогда главная(или спец. контролирующая) нить осматривает всех пациентов на предмет нежелания работать и выходит из системы всё корректно завершив или забивает на такое пожелание поднити(рано ещё, сиди тихо.) Процесс выхода реализован в одной точке и, гарантированно правильный, а не свой у каждого. А можно в каждую поднить передавать ссылку на главную(или контролирующую). Тогда это будет не поллинг постоянный, а прямая точка входа для любой нити, сообщить контроллирующей - "эй, начальнег, пора бы и на перекур". Но, опять-таки, завершения и выходы все делает главная(или ответственная за координацию всех) нить |
| Автор: diablero 15.5.2007, 19:42 |
| shutdown-ловушку поставь и коректно сможешь обрабатывать выход из программы. Прочитать можно http://javaportal.ru/java/articles/noclosejava.html |