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 -9kill -15

用法示例

下面看个示例就可以搞清楚了。
在这里插入图片描述
关于示例就说到这里吧,其实在实际开发中经常遇到,比如大数据开发当中, MapReduce 中使用System.exit(job.waitForCompletion(true)?0:1);可以判短程序是否正常退出。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部