2010-09-17 26 views
8

我只是想知道。我需要在main之前撥打System.exit(0); Java命令行應用程序的方法結束嗎?如果是這樣,爲什麼?讓它自行退出有什麼不同,如果我總是把它放在那裏0?什麼沒有清理?正確結束Java命令行應用程序

在此先感謝。

+1

另請參閱http://stackoverflow.com/questions/3715967/when-should-we-call-system-exit-in-java – Qwerky 2010-09-17 08:59:54

回答

16

不!您並不總是需要致電System.exit(0)才能結束一個java程序。如果您的代碼沒有生成非守護線程,則應用程序將在完成主線程任務後自動終止。

如果在產卵一些非守護線程的主要方法,結果它們還活着做了一些處理,而你的主要方法已經達到了目的,那麼應用程序將不會終止,直到那些線程完成。在這種情況下,如果顯式調用System.exit(0),則應用程序將立即終止所有的線程殺死。

請參閱javadoc of Thread其中提到的細節。

2

無需致電System.exit(),只需從main()返回即可。這是從Java程序退出的正常習慣用法。

System.exit()通常被稱爲終止在事物中間的應用程序(這通常意味着由於致命錯誤而異常終止)。