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

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

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

要添加到其他答案:

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

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

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

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

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

  2. 程序抛出一个未被捕获的exception

  3. System.exit(INT)

  4. 它会崩溃吗?

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

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

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

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

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

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