System.exit()
можна використовувати для запуску гаків відключення до завершення програми. Це зручний спосіб вирішити питання про відключення у великих програмах, коли всі частини програми не можуть (і не повинні) усвідомлювати одна одну. Потім, якщо хтось хоче вийти, він може просто зателефонувати System.exit()
, а гачки закриття (якщо правильно встановлені) дбають про виконання всіх необхідних церемоній закриття, таких як закриття файлів, звільнення ресурсів тощо.
"Цей метод ніколи не повертається нормально." означає просто, що метод не повернеться; як тільки нитка піде туди, вона не повернеться.
Інший, можливо, більш поширений спосіб виходу з програми - це просто дійти до кінця main
методу. Але якщо будуть запущені якісь недемонові потоки, вони не закриються, і таким чином JVM не вийде. Таким чином, якщо у вас є якісь такі недемонові потоки, вам знадобляться інші засоби (крім гачків відключення), щоб вимкнути всі недемонові потоки та звільнити інші ресурси. Якщо немає інших недемонових потоків, повернення з main
вимкне JVM і зателефонує гачками відключення.
Чомусь гачки відключення здаються недооціненим і неправильно зрозумілим механізмом, і люди заново вигадують колесо за допомогою всіляких фірмових хакерських хакерів, щоб вийти зі своїх програм. Я б закликав використовувати гачки для відключення; все це є в стандартному режимі виконання, який ви все одно будете використовувати.