原作者解释得很清晰明,因此摘抄于此。
关于System.exit(status)
System.exit(status)源码说明如下:
System.java
/** * Terminates the currently running Java Virtual Machine. The * argument serves as a status code; by convention, a nonzero status * code indicates abnormal termination. */ public static void exit(int status) { Runtime.getRuntime().exit(status); }
Runtime.java
/** * Terminates the currently running Java virtual machine by initiating its * shutdown sequence. This method never returns normally. The argument * serves as a status code; by convention, a nonzero status code indicates * abnormal termination. * / public void exit(int status) { // Make sure we don't try this several times synchronized(this) { if (!shuttingDown) { shuttingDown = true; Thread[] hooks; synchronized (shutdownHooks) { // create a copy of the hooks hooks = new Thread[shutdownHooks.size()]; shutdownHooks.toArray(hooks); } // Start all shutdown hooks concurrently for (Thread hook : hooks) { hook.start(); } // Wait for all shutdown hooks to finish for (Thread hook : hooks) { try { hook.join(); } catch (InterruptedException ex) { // Ignore, since we are at VM shutdown. } } // Ensure finalization on exit, if requested if (finalizeOnExit) { runFinalization(); } // Get out of here finally... nativeExit(status); } } }
注释中说的很清楚,这个方法是用来结束当前正在运行中的java虚拟机。
如何status是非零参数,那么表示是非正常退出。
- System.exit(0)是将你的整个虚拟机里的内容都停掉了 ,而dispose()只是关闭这个窗口,但是并没有停止整个application exit() 。无论如何,内存都释放了!也就是说连JVM都关闭了,内存里根本不可能还有什么东西
- System.exit(0)是正常退出程序,而System.exit(1)或者说非0表示非正常退出程序
- System.exit(status)不管status为何值都会退出程序。和return 相比有以下不同点:return是回到上一层,而System.exit(status)是回到最上层
举例说明
在一个if-else判断中,如果我们程序是按照我们预想的执行,到最后我们需要停止程序,那么我们使用System.exit(0)。而System.exit(1)一般放在catch块中,当捕获到异常,需要停止程序,我们使用System.exit(1)。这个status=1是用来表示这个程序是非正常退出。
摘抄来源
历史上的今天
暂无评论...
随机推荐
歌德:野蔷薇
少年看到一朵蔷薇,荒野的小蔷薇,那样的娇嫩可爱而鲜艳,急急忙忙走向前,看得非常欢喜。蔷薇,蔷薇,红蔷薇,荒野的小蔷薇。 少年说:“我要来采你,荒野的小蔷薇!”蔷薇说:“我要刺你,让你用不会忘记。我不愿被你采折。”蔷薇,蔷薇,红蔷薇,荒野的小蔷薇。 ...
余光中:等你 在雨中
等你 在雨中 在造虹的雨中蝉声沉落 蛙声升起一池的红莲如红焰 在雨中 你来不来都一样 竟感觉每朵莲都像你尤其隔著黄昏 隔著这样的细雨 永恒 刹那 刹那 永恒等你 在时间之外在时间之内 等你 在刹那 在永恒 如果你的手在我的手里 此刻如果你的清芬...
王朔:上一秒痛苦,下一秒无聊
每天晚上我都睡得很晚,不是不困,而是不想睡,强迫自己不要睡。我似乎得了强迫症,我很忧郁。因为我总觉得一天什么都没干就这么过去了,实在不甘心!于是我就尽量延长这一天的时间。我真是个有志气的人,我很欣慰。志气是有了,可是找不到有志气的事情干,我很忧郁。幸好还有个电视,最妙的是还有个遥控器。遥控器真...
C语言之链接属性
前言对于C语言的链接属性,比较模糊,因此今天回归一下课本上的知识,并记录一下,方便自己回顾。正文链接属性链接属性用于认定不同文件的标识符(比如变量名、函数名)是否是同一个实体。通俗地说,就是在两个不同文件中的变量、函数声明是否指向同一个实体。比如:a、b文件同时声明了变量c,链接属性就指...
currentTimeMillis()与uptimeMillis()区别
前言项目中,由于需要做防爆力点击,需要计算用户点击的时间间隔。虽然也经常使用,但偶尔还是忘了该用哪个,以及这两个之间的区别,因此,抽空整理一下,摘抄于此。Android中计算时间间隔的方法记录开始时间 startTime,然后每次回调时,获取当前时间 currentTime,计算差值 = ...
胡适:赠与今年的大学毕业生
这一两个星期里,各地的大学都有毕业的班次,都有很多的毕业生离开学校去开始他们的成人事业。学生的生活是一种享有特殊优待的生活,不妨幼稚一点,不妨吵吵闹闹,社会都能纵容他们,不肯严格的要他们负行为的责任。现在他们要撑起自己的肩膀来挑他们自己的担子了。在这个国难最紧急的年头,他们的担子真不轻! 我们祝他们...