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