`
zhaohaolin
  • 浏览: 1017246 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

System.exit(0)【转】

    博客分类:
  • JAVA
阅读更多

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:一个JUnit5扩展,可帮助编写调用System.exit()的测试

    JUnit5 System.exit()扩展此可帮助您编写测试代码,以测试调用System.exit()代码。 从JUnit 5开始,@ Rules,@ ClassRules和Runners被扩展概念取代。正在安装将以下内容复制到build.gradle或build.xml 。 ...

    系统.exit.zip

    标题 "系统.exit.zip" 暗示我们关注的是与计算机操作系统中的退出命令或者可能是与Java编程语言中的`System.exit()`方法相关的主题。虽然没有提供具体的标签来进一步指导,但我们可以从"PCF-demo-master"这个压缩...

    怎样完全退出android程序

    在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序...

    毕业设计&课设-安装后调用System.exit()的Java代理。.zip

    毕业设计、课程设计源码文件,已经过测试可以直接使用。 毕业设计、课程设计源码文件,已经过测试可以直接使用。 毕业设计、课程设计源码文件,已经过测试可以直接使用。 毕业设计、课程设计源码文件,已经过测试...

    毕业设计&课设-一个JUnit5扩展,用于帮助编写调用System.exit()的测试.zip

    毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以...

    exit结束activity

    描述中提到的"exit"通常指的是强制退出整个应用程序,这通常是通过调用`System.exit(0)`来实现的。这种方法会立即结束应用程序进程,不再执行任何Java代码,包括没有被清理的资源。与`finish()`不同,`System.exit...

    Android 完全退出当前应用程序的四种方法

    System.exit(0); //常规java、c#的标准退出法,返回值为0代表正常退出   2. 任务管理器方法  首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限  ActivityManager am = (ActivityManager...

    Java开发新猜数字小游戏,使用Git进行源码管理,使用单元测试工具JUnit对各个方法进行单元测试

    Java开发新猜数字小游戏,使用Git进行源码管理,使用单元测试工具JUnit对各个方法进行单元测试 public static void main(String[] args) { System.out.println("|----新猜数字游戏-----|");... System.exit(0

    用java编写猜数游戏

    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)!"); } } }

    uyaffs2 解压yaffs2 格式的img:system.img userdata.img

    `system.img`和`userdata.img`是两种常见的镜像文件,它们分别对应于系统的系统分区和用户数据分区。这些文件通常采用特定的文件系统格式,以便在Android设备上高效地存储和访问数据。在本案例中,我们将探讨如何...

    javafx-8u152-apidocs-api

    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位置的问题

    在本文中,我们将深入探讨如何解决在使用PhantomJS进行截图时遇到的问题,特别是关于`phantom.exit()`的位置问题。 首先,我们需要理解`phantom.exit()`这个函数的作用。`phantom.exit()`是PhantomJS提供的一个命令...

    java假期练习程序.rar

    System.exit(0); } product=number1*number2; JOptionPane.showMessageDialog(null,number1+"*"+number2+"="+product,"jieguo",JOptionPane.PLAIN_MESSAGE); System.exit(0); } }

    C#中WinForm程序退出方法技巧总结

    最后,`System.Environment.Exit(0)`是强制性退出程序的最彻底方式。无论当前程序有多少线程,它都会立即结束,确保程序干净地退出,不会有任何遗留的运行线程。这里的参数`0`通常表示程序正常退出,非零值通常表示...

    System Lambda是一个函数集合,用于测试使用javalangSystem的代码.zip

    System Lambda 可以捕获 `System.exit()` 调用,防止测试中断。 5. **类加载器(System.classLoader())**:在某些测试场景下,可能需要模拟不同的类加载行为。System Lambda 提供了对类加载器的控制,方便进行这种...

    EmvReader Java Code

    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 ...

    Guid.rar_out_游览图

    大厦游览图,通过命令行来实现 System.out.println("where 显示当前在什么地方") System.out.println("list 列出当前位置的物品") System.out.println("list allspots ... System.out.println("exit 退出命令行")

    java 经典小程序

    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 "); } }

    java用类实现异常的处理的实例

    import java.util.*; class MyException extends Exception{ String message; MyException(int age){ message=age+"年龄异常";... System.exit(0); } System.out.println(a.getAge()); } }

Global site tag (gtag.js) - Google Analytics