Java的System.exit()详解

说到 java.lang.System.exit() 这个方法,咱们先看下 JDK8 的 API 中怎么说
Java的System.exit()详解_第1张图片
为方便大家分析,我给粘下来

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

用法示例

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

你可能感兴趣的:(Java,java)