【发布时间】:2015-05-04 08:04:39
【问题描述】:
考虑以下永远打印“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();
}
}
}
}
这是输出:
有没有办法设计一个外部的第三个程序,当我们杀死它时它会观察这个程序(比如在命令行中使用 CTRL+C);然后这个“父”程序继续运行“Hello World”?
我认为它可能看起来像这样:
所以我的问题是 - 我怎样才能模拟这样的代码,它具有这种故障安全能力?有没有办法做到这一点?
谢谢!
编辑:我在这里找到了一个相关的简洁链接,但解决了一些不同的问题-How can I restart a Java application?
【问题讨论】:
-
@AbdulAhmad - 我想是的,怎么样
-
在 Linux 中,您通常会使用 init 进程(例如 upstart 或 systemd)来监督长时间运行的服务。也许 Windows 也有类似的东西?
-
@ChrisMartin - 所以对于 Linux,这项任务很容易吗?我可以尝试在虚拟机上使用 Linux
-
“Easy”是一个延伸,仅仅为了这个就有点过头了,但也许是一个很好的学习练习? :)