public class HelloGoodbye{
try{
System.out.println(“Hello World”);
System.exit(0);
} finally
{
System.out.println(“Goodbye
World”);
}}
上面这段代码会打印出什么呢?要知道答案需要了解System.exit(0)这个方法在执行过程中到底发生了哪些事情。API文档上描述System.exit方法会导致当前运行线程停止并使其它线程都终止,因此上面这段代码中的finally代码块不会被执行。
进一步探索System.exit被调用后的行为,它在虚拟机在退出前会执行两个清除任务。第一,它会执行所有通过Runtime.addShutdownHook注册的shutdown
hooks.它能有效的释放JVM之外的资源。第二,执行清除任务,运行相关的finalizer方法终结对象。
如果需要在调用System.exit方法后仍然打印出“Goodbye World”,可采用如下的方法:
System.out.println(“Hello World”);
Runtime.getRuntime().addShutdownHook(
new Thread(){
public void run(){
System.out.println(“Goodbye world”);
}
}
)
System.exit(0);
在Tomcat的源代码中也有用到shutdownHook,保证了Tomcat在运行时,收到Ctrl+c命令终止JVM进程时,能够正确退出
分享到:
相关推荐
JUnit5 System.exit()扩展此可帮助您编写测试代码,以测试调用System.exit()代码。 从JUnit 5开始,@ Rules,@ ClassRules和Runners被扩展概念取代。正在安装将以下内容复制到build.gradle或build.xml 。 ...
标题 "系统.exit.zip" 暗示我们关注的是与计算机操作系统中的退出命令或者可能是与Java编程语言中的`System.exit()`方法相关的主题。虽然没有提供具体的标签来进一步指导,但我们可以从"PCF-demo-master"这个压缩...
在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序...
毕业设计、课程设计源码文件,已经过测试可以直接使用。 毕业设计、课程设计源码文件,已经过测试可以直接使用。 毕业设计、课程设计源码文件,已经过测试可以直接使用。 毕业设计、课程设计源码文件,已经过测试...
毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以...
描述中提到的"exit"通常指的是强制退出整个应用程序,这通常是通过调用`System.exit(0)`来实现的。这种方法会立即结束应用程序进程,不再执行任何Java代码,包括没有被清理的资源。与`finish()`不同,`System.exit...
System.exit(0); //常规java、c#的标准退出法,返回值为0代表正常退出 2. 任务管理器方法 首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限 ActivityManager am = (ActivityManager...
Java开发新猜数字小游戏,使用Git进行源码管理,使用单元测试工具JUnit对各个方法进行单元测试 public static void main(String[] args) { System.out.println("|----新猜数字游戏-----|");... System.exit(0
import java.util.Scanner; public class Test{ public static void main...System.exit(0);break; } else if(i==1) game.start(); else System.out.println("对不起,请您重新输入(0或1)!"); } } }
`system.img`和`userdata.img`是两种常见的镜像文件,它们分别对应于系统的系统分区和用户数据分区。这些文件通常采用特定的文件系统格式,以便在Android设备上高效地存储和访问数据。在本案例中,我们将探讨如何...
A JavaFX Application should not attempt to use JavaFX after the FX toolkit has terminated or from a ShutdownHook, that is, after the stop() method returns or System.exit(int) is called.
在本文中,我们将深入探讨如何解决在使用PhantomJS进行截图时遇到的问题,特别是关于`phantom.exit()`的位置问题。 首先,我们需要理解`phantom.exit()`这个函数的作用。`phantom.exit()`是PhantomJS提供的一个命令...
System.exit(0); } product=number1*number2; JOptionPane.showMessageDialog(null,number1+"*"+number2+"="+product,"jieguo",JOptionPane.PLAIN_MESSAGE); System.exit(0); } }
最后,`System.Environment.Exit(0)`是强制性退出程序的最彻底方式。无论当前程序有多少线程,它都会立即结束,确保程序干净地退出,不会有任何遗留的运行线程。这里的参数`0`通常表示程序正常退出,非零值通常表示...
System Lambda 可以捕获 `System.exit()` 调用,防止测试中断。 5. **类加载器(System.classLoader())**:在某些测试场景下,可能需要模拟不同的类加载行为。System Lambda 提供了对类加载器的控制,方便进行这种...
System.out.println("#ERROR# Invalid reader index '"+args[0]+"'. Last valid index is " + (terminals.size()-1) ); System.exit(3); // throw new Exception( "Invalid reader index '"+iReader+"'. Last ...
大厦游览图,通过命令行来实现 System.out.println("where 显示当前在什么地方") System.out.println("list 列出当前位置的物品") System.out.println("list allspots ... System.out.println("exit 退出命令行")
1,编写程序,判断给定的某个... System.exit(0); } if ((year%4==0)&&(year%100!=0)||(year%400==0)) System.out.println(year+" is bissextile"); else System.out.println(year+" is not bissextile "); } }
import java.util.*; class MyException extends Exception{ String message; MyException(int age){ message=age+"年龄异常";... System.exit(0); } System.out.println(a.getAge()); } }