有没有办法动态重启循环打印输出的HelloWorld Java程序?

Cof*_*fee 11 java restart

考虑以下简单的代码,永远打印"Hi world":

public class WakeMeUpSomehow {

 public static void main(String[] args) {

    while (true) {
    try {
         System.out.println( " Hi world ");
         Thread.sleep(1000);                 //1000 milliseconds is one second.
    } catch(InterruptedException ex) {
         Thread.currentThread().interrupt();
    }
    }
 }
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

在此输入图像描述

有没有办法设计一个外部的第三个程序,它监视这个程序,以便在我们杀死它时注意到(如命令行中的CTRL + C); 然后这个"父"程序恢复"Hello World"运行?

我认为它可能看起来像这样:

在此输入图像描述

所以我的问题是 - 如何模拟这样的代码,具有这种故障安全功能?有办法做到这一点吗?

谢谢 !

编辑:我在这里找到了一个相关的简洁链接,但解决了一些不同的东西 - 如何重新启动Java应用程序?

man*_*uti 9

保证关闭挂钩在程序的正常关闭事件上运行,但不会在各种异常终止时运行,例如强制终止 JVM时.

一种解决方案可能是使用批处理脚本:

@echo off
setlocal

start /wait java WakeMeUpSomehow

if errorlevel 1 goto retry
echo Finished successfully
exit

:retry
echo retrying...
start /wait java WakeMeUpSomehow
Run Code Online (Sandbox Code Playgroud)