java应用如何退出
终止 Java 应用程序的方法
调用 System.exit()
使用 System.exit(int status) 方法可以立即终止 Java 虚拟机(JVM)。参数 status 通常为 0 表示正常退出,非零值表示异常退出。
示例代码:
System.exit(0); // 正常退出
抛出未捕获异常
如果主线程或其他线程抛出未捕获的异常,且未设置全局异常处理器(UncaughtExceptionHandler),程序将终止。
示例代码:

throw new RuntimeException("强制终止");
中断所有非守护线程
Java 程序在所有非守护线程(non-daemon threads)结束时终止。可以通过中断或停止所有非守护线程来实现退出。
示例代码:

Thread.currentThread().interrupt(); // 中断当前线程
使用 Runtime.halt()Runtime.getRuntime().halt(status) 强制终止 JVM,不执行关闭钩子(shutdown hooks)或 finalizer。适用于紧急退出场景。
示例代码:
Runtime.getRuntime().halt(1); // 强制退出,跳过清理
触发关闭钩子(Shutdown Hook)
通过 Runtime.addShutdownHook() 注册的钩子会在 JVM 退出时执行清理逻辑,但需通过其他方法(如 System.exit())触发退出。
示例代码:
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
System.out.println("执行清理操作");
}));
System.exit(0);
注意事项
- 守护线程:守护线程(daemon threads)不会阻止 JVM 退出,但需确保主线程和非守护线程已终止。
- 资源释放:直接调用
halt()或崩溃可能导致资源未释放,推荐优先使用System.exit()或正常线程结束。 - 跨平台行为:某些方法(如
kill命令)可能绕过 Java 的退出机制,需结合操作系统信号处理。






