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.
     * <p>
     * This method calls the <code>exit</code> method in class
     * <code>Runtime</code>. This method never returns normally.
     * <p>
     * The call <code>System.exit(n)</code> is effectively equivalent to
     * the call:
     * <blockquote><pre>
     * Runtime.getRuntime().exit(n)
     * </pre></blockquote>
     *
     * @param      status   exit status.
     * @throws  SecurityException
     *        if a security manager exists and its <code>checkExit</code>
     *        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);可以判短程序是否正常退出。

猜你喜欢

转载自blog.csdn.net/weixin_44285445/article/details/107748514