System.exit(int status) :是用来结束当前正在运行中的java虚拟机。
System.exit(0) :status 是零参数,那么表示正常退出程序。
System.exit(1) :status 是1或者非零参数,那么表示非正常退出程序。
在一个if-else判断中,如果我们程序是按照我们预想的执行,到最后我们需要停止程序,那么我们使用 System.exit(0)。
System.exit(1) 一般放在 catch 块中,当捕获到异常,需要停止程序,我们使用System.exit(1) 这个 status=1 是用来表示这个程序是非正常退出。
进一步探索 System.exit 被调用后的行为,它在虚拟机在退出前会执行两个清除任务。
第一,它会执行所有通过 Runtime.addShutdownHook 注册的 shutdown hooks 它能有效的释放JVM之外的资源。
第二,执行清除任务,运行相关的 finalizer 方法终结对象。