Java的System.exit()详解
说到 java.lang.System.exit() 这个方法,咱们先看下 JDK8 的 API 中怎么说

为方便大家分析,我给粘下来
public static void exit(int status)
Terminates the currently running Java Virtual Machine. The argument serves as a status code; by convention, a nonzero status code indicates abnormal termination.
This method calls the exit method in class Runtime. This method never returns normally.The call System.exit(n) is effectively equivalent to the call:Runtime.getRuntime().exit(n)Parameters:
status - exit status.
Throws:
SecurityException - if a security manager exists and its checkExit method doesn't allow exit with the specified status.
See Also:
Runtime.exit(int)
System.exit(int status) 的作用是:

直译:终止当前正在运行的Java虚拟机。参数用作状态代码;按照惯例,非零状态代码表示异常终止。此方法在类运行时调用exit方法。此方法从不正常返回。
再看下源码注释
/*** Terminates the currently running Java Virtual Machine. The* argument serves as a status code; by convention, a nonzero status* code indicates abnormal termination.* * This method calls the exit method in class* Runtime. This method never returns normally.*
* The call System.exit(n) is effectively equivalent to* the call:*
* Runtime.getRuntime().exit(n)*
** @param status exit status.* @throws SecurityException* if a security manager exists and its checkExit* method doesn't allow exit with the specified status.* @see java.lang.Runtime#exit(int)*/public static void exit(int status) {Runtime.getRuntime().exit(status);}
也就是说,该方法用来结束当前正在运行中的java虚拟机。
public static void exit(int status)
status 为 0:表示正常退出程序,也就是结束当前正在运行中的java虚拟机。
status 为 1 或 -1 或 任何其他非零值 :表示非正常退出当前程序。
注意:此方法不会返回任何值。
正常退出和非正常退出具体是什么个情况?
答:正常退出 是指如果当前程序还有在执行的任务,则等待所有任务执行完成以后再退出;非正常退出 是只要时间到了,立刻停止程序运行,不管是否还有任务在执行。这个效果就类似于 linux 里面的 kill -9 和 kill -15 。
用法示例
下面看个示例就可以搞清楚了。

关于示例就说到这里吧,其实在实际开发中经常遇到,比如大数据开发当中, MapReduce 中使用System.exit(job.waitForCompletion(true)?0:1);可以判短程序是否正常退出。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
