原作者解释得很清晰明,因此摘抄于此。
关于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是用来表示这个程序是非正常退出。
摘抄来源
历史上的今天
暂无评论...
随机推荐
林清玄:把时间花在心灵上
朋友带我去看一位收藏家的收藏,据说他收藏的都是顶级的东西,随便拿一件来都是价逾千万。我们穿过一条条的巷子,来到一家不起眼的公寓前面,我心中正自纳闷,顶级的古董怎么会收藏在这种地方呢?收藏家来开门了,连续打开三扇不锈钢门,才走进屋内。室内的灯光非常幽暗,等了几秒钟,我才适应了室内的光线,这时,才赫...
WordPress博客搬家教程
这是建站的必备知识,我们需要怎么进行网络搬家,如果你不会,请仔细研读。这一篇文章写得最简单最明白的。第一步:备份网站根目录下所有文件并转移到新主机。这一步主要是把原来的空间中的网站程序、图片等资源下载备份,并上传到新的主机空间。如果原来空间支持在线压缩,并且新的空间支持解压缩,那么建议...
NDK中jni.h头文件完整内容
前言这里摘抄一下jni.h头文件中的所有内容,主要是方便自己查阅。涉及的文件android-ndk-r21d-windows-x86_64\android-ndk-r21d\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include...
吴念真:饱了别人,瘦了自己
当我们第一眼看到阿婆的自助餐厅时,还以为自己找错了地方呢!以为自己走入了一个工地的厨房,一个受雇的欧巴桑正准备免费的午餐,等待忙了一个早上的工人,让他们填饱肚子。话说回来,这样的印象跟事实其实相去不远。经营这家没有招牌的自助餐厅的阿婆庄朱玉女士,唯一的经营哲学就是让你吃到饱!今年七十六岁的她,从早...
Android MediaButton监听再次记录
前言再次记录一下Android 中MediaButton的注册,注销代码片段,以及遇到的问题,记录于此,方便自己查阅和回顾。正文一般会出现监听了,但是没收到。下面记录一下自己处理的方式。隐藏内容!付费阅读后才能查看!¥4 ¥5多个隐藏块只需支付一次付费阅读参考文章老文章了,但还是这里重...
郑愁予 : 错误
我打江南走过那等在季节里的容颜如莲花的开落东风不来,三月的柳絮不飞 你底心如小小的寂寞的城恰若青石的街道向晚跫音不响,三月的春帷不揭 你底心是小小的窗扉紧掩我达达的马蹄是美丽的错误我不是归人,是个过客……