java程序可以结束多少种方式?

时间:2010-02-04 18:29:02

标签: java

我知道使用System.exit(0)可以结束一个java程序,例如,如果我有一个JFrame窗口,它将关闭并结束程序,但我想知道有多少其他方法,它可以关闭和程序结束了?包括何时发生错误,是否会关闭程序并关闭JFrame?

7 个答案:

答案 0 :(得分:4)

要添加其他答案:

  • 如果托管VM的进程被强制终止,您的程序将自动消失
  • 如果在托管VM的计算机上拔出插头,也会发生同样的情况:)

答案 1 :(得分:3)

当最后一个没有守护程序标志的Thread结束,或者当你调用一个关闭虚拟机的方法(System.exit(),Runtime.exit(),Runtime.halt()和可能的一些时,Java程序结束更多)。

其他任何东西都取决于调用System.exit()的库(例如带有EXIT_ON_CLOSE的JFrame)。

答案 2 :(得分:2)

这就是我能想到的全部内容:

  1. main()返回(值或void()main完成执行其最后一个语句)

  2. 程序抛出未捕获的异常

  3. System.exit(int)的

  4. 它会崩溃吗?

  5. 在你关闭JFrame的情况下,我相信会有一个onClose()处理程序调用System.exit(0)或导致main方法返回。

答案 3 :(得分:1)

Java程序结束的另一种方式是执行java代码中的最后一个语句。 此外,当发生java.lang.OutOfMemory错误时,程序异常终止。当Java虚拟机无法分配对象时会发生这种情况,因为它没有内存,并且垃圾收集器不能再提供任何内存。

答案 4 :(得分:0)

在您提到JFrame时,我已经在Swing GUI的上下文中回答了您的问题。

  • 使用Swing GUI,Event Dispatch线程将记录发生的任何异常,但不会在这种情况下终止应用程序。
  • 同样,如果另一个线程抛出异常并终止Event Dispatch线程,将确保应用程序保持活动状态(因为它不是守护程序线程)。
  • 最后一点:如果您希望在关闭JFrame时终止您的申请,则需要致电:setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

否则,当您关闭框架时,框架将被隐藏,但应用程序将继续运行。

答案 5 :(得分:0)

您可以在外部结束正在运行的Java程序。通过从任务管理器中杀死java.exe进程(如果是windows)

答案 6 :(得分:-1)

您也可以使用Application.exit()。