Завершить основную нить, не обеспечивая прекращение порожденных ею потоков - PullRequest
4 голосов
/ 24 мая 2011

Я реализовал многопоточную программу, которая включает в себя создание потока для каждого пользователя и выполнение некоторых незначительных действий (не требуются исчерпывающие процессы, такие как подключение к базе данных). Основной поток выполняется бесконечно, и его завершение обрабатывается путем создания файла мониторингадеятельность.Мой вопрос: можно ли завершить основной поток сразу, не дожидаясь окончания потока?(Предполагая, что потоки завершатся самостоятельно (!), это может быть ложным предположением).

Ответы [ 3 ]

3 голосов
/ 24 мая 2011

Да, смысл потоков в том, что они работают независимо.

Это будет иметь значение только в том случае, если ваши клиентские потоки были запущены как потоки демона, а main - единственный поток, не являющийся демоном.(В этом случае приложение будет закрыто при остановке)

3 голосов
/ 24 мая 2011

Конечно.

Основной поток - это всего лишь один поток среди других, и его завершение не повлияет на другие потоки (если вы не используете System.exit(), чтобы остановить поток ...).

Основной поток - это только первый поток *) , который был запущен, но не имеет дополнительных или скрытых функций или функций.


*) для простоты - jvm, возможно, запустил несколько внутренних потоков до main - но в приложении нет кода для этих потоков

1 голос
/ 24 мая 2011

Да, и обычно это так в большинстве приложений.Основной поток обычно отвечает за инициирование системы, и после этого он может спокойно умереть.

Обратите внимание, что вы на самом деле не «завершаете» основной поток, вместо этого просто дайте ему завершить свой метод run.И это нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...