java如何停止进程
停止 Java 进程的方法
使用 Process.destroy() 方法
通过 Process 类的 destroy() 方法可以强制终止子进程。适用于通过 Runtime.exec() 或 ProcessBuilder 启动的外部进程。
示例代码:
Process process = Runtime.getRuntime().exec("command");
process.destroy(); // 强制终止进程
使用 Process.destroyForcibly() 方法
如果 destroy() 未能终止进程,可使用 destroyForcibly() 强制结束。通常与 waitFor() 结合使用以确保进程终止。
示例代码:

Process process = new ProcessBuilder("command").start();
process.destroyForcibly();
process.waitFor(); // 等待进程终止
通过 PID 终止进程(跨平台)
在 Unix/Linux 和 Windows 系统中,可以通过 PID(进程 ID)终止进程。需借助系统命令实现。
示例代码(Linux/Unix):
long pid = process.pid(); // 获取进程 PID
Runtime.getRuntime().exec("kill -9 " + pid);
示例代码(Windows):

long pid = process.pid();
Runtime.getRuntime().exec("taskkill /F /PID " + pid);
优雅停止线程或应用程序
对于 Java 内部线程或主进程,可通过设置标志位或调用 System.exit() 终止。
示例代码(线程停止):
class WorkerThread extends Thread {
private volatile boolean running = true;
public void stopThread() {
running = false;
}
@Override
public void run() {
while (running) {
// 执行任务
}
}
}
使用 System.exit() 终止 JVM
直接调用 System.exit(int status) 可终止整个 Java 虚拟机。参数 status 为 0 表示正常退出,非 0 表示异常退出。
示例代码:
System.exit(0); // 正常终止程序
注意事项
destroy()和destroyForcibly()可能无法立即终止进程,建议配合waitFor()使用。- 跨平台 PID 操作需注意系统兼容性,Windows 和 Unix/Linux 命令不同。
System.exit()会终止所有线程,需谨慎使用。






