2010-09-17 3 views
8

Мне просто интересно. Нужно ли мне звонить System.exit(0); прямо перед main метод приложения командной строки Java заканчивается? Если да, то почему? В чем отличие от того, чтобы позволить ему выйти из себя, если бы я всегда ставил там 0? Что не очищено?Завершить приложение командной строки Java правильно

Заранее спасибо.

+1

См. Также http://stackoverflow.com/questions/3715967/when-should-we-call-system-exit-in-java – Qwerky

ответ

16

Нет! Вам не всегда нужно позвонить System.exit(0), чтобы закончить Java-программу. Если не существует потока, не созданного вашим демоном, это приложение автоматически прекратится после завершения задачи основного потока.

Если ваш основной метод приводит к появлению некоторого потока не-демона, который все еще жив, выполняет некоторую обработку, пока ваш основной метод достиг цели, тогда приложение не будет завершено до тех пор, пока эти потоки не будут завершены. В этом случае, если вы явно вызываете System.exit(0), приложение немедленно прекратит уничтожение всех ваших потоков.

Обратите внимание, что javadoc of Thread, где упоминается подробная информация.

2

Не нужно звонить System.exit(), просто вернитесь от main(). Это нормальная идиома для выхода из Java-программы.

System.exit() обычно вызывается для прекращения действия приложения в середине вещей (что обычно означает ненормальное завершение из-за фатальной ошибки).

Смежные вопросы