大家好,我的Java应用程序中有两个进程,如下所示。
Process p1=some process;
Process p2=some process;
第一次它完美地开始工作。但是当我重新加载应用程序时,旧进程也在运行,所以我只想杀死旧进程,如果它正在执行。我知道我们可以通过使用它的进程 id 来杀死一个进程。但是我怎样才能得到这个 p1 和 p2 的进程 ID。任何想法?
在您的应用程序中捕获重新加载事件并在退出之前终止子进程。
如果这不起作用,则您的设计中可能存在错误。尝试修复该错误。真的。我是认真的。
一种解决方法是将 PID 写入文本文件。开始时,请阅读文本文件,检查这是否是正确的进程,然后将其终止。
如果没有检查,您可能会杀死由其他人创建的完全有效的进程。我的推理是这样的:重新加载时不能终止进程。这意味着您也不能删除文本文件。所以PID文件会一直存在。最终,您将杀死错误的进程。这将每年发生一次。这将在您离开/换工作/等六个月后的第一次发生。没有人会理解发生了什么,因为它几乎不可能重现。
正如其他人所说,最好以更自然的方式终止该过程。
但是,如果您确实需要强制终止它,那么您可以在 Process 对象上调用 destroy() 方法,只要您不再关心它是否运行。
另外,您真的需要将代码作为进程运行吗?通常有更好的方法。