4

我正在运行一些 Java 应用程序,我需要从 Windows bat 脚本优雅地关闭/关闭所有应用程序。所以我的问题是:
如何通过 windows bat 脚本调用关机钩子并优雅地关闭 java 程序。

任何建议表示赞赏。提前致谢。

4

3 回答 3

5

看一下类中的addShutdownHook方法Runtime

Runtime.getRuntime().addShutdownHook(...);

更新:根据下面的评论,Windows shell 中有一个命令 TASKKILL,类似于 *nix kill 命令。例如TASKKILL /IM java.exe将终止所有 java 进程。TASKLIST可用于查找所有正在运行的进程。将它与 shutdownhook 结合使用应该会给您所需的优雅可能性。

于 2011-07-26T07:22:07.337 回答
4

Java 中的“优雅”关闭通常是通过让所有非守护线程正常完成其工作来实现的。如果您的应用程序在某个端口上侦听“关闭”命令,那么您可以让脚本触发该端口的命令,然后您可以使用该命令为线程设置适当的标志以停止工作,让 JVM 关闭. 这可能是我见过的最简单的方法。

于 2011-07-26T06:16:57.443 回答
3

您的 .bat 脚本将是 VM 外部的进程。所以你需要在你的java应用程序中实现某种IPC。一些相对简单的选项可能是使用 RMI 或 JMX。

其他可能性是使用一些可以被您的应用程序监视并且可以由 .bat 脚本修改的文件,以便其他进程识别出它需要关闭。

于 2011-07-26T06:16:13.913 回答