如何在以编程方式关闭时重新启动Java应用程序

如何在以编程方式关闭时重新启动Java应用程序,java,Java,我一直在试图弄清楚如何使常规java应用程序在关闭时重新打开,或者干脆使其无法关闭。我意识到这在swing应用程序中是可能的,可以在关闭时使用DO_NOTHING_,但我的应用程序不使用swing 假设我正在运行以下程序: public static void main(String[] args) { new MyThread(); } MyThread一直在运行 假设用户关闭了程序,是否可以检测到java程序正在关闭并重新打开它,或者更好的是,是否可以让它在关闭时不使用swing?

我一直在试图弄清楚如何使常规java应用程序在关闭时重新打开,或者干脆使其无法关闭。我意识到这在swing应用程序中是可能的,可以在关闭时使用DO_NOTHING_,但我的应用程序不使用swing

假设我正在运行以下程序:

public static void main(String[] args) {
    new MyThread();
}
MyThread一直在运行


假设用户关闭了程序,是否可以检测到java程序正在关闭并重新打开它,或者更好的是,是否可以让它在关闭时不使用swing?如果确实要重新启动应用程序,请参见以下内容:


但从您的问题来看,我认为您希望阻止用户关闭应用程序。您无法阻止这种情况,即使当用户单击X关闭图标或按ALT+F4时您什么也不做,例如,用户仍可以从任务管理器中终止您的应用程序。

类似的情况在守护程序中很常见。但一般来说,这是不可能的,因为必须有可能关闭一个行为不端的程序


您可以做的是使用第二个看门狗程序,它检测您的程序是否已退出,如果已退出,则重新启动您的程序。但是如果看门狗被杀死,您的程序将保持死机状态。

请参阅:这可能很有用,我会看一看,谢谢:请不要以更改问题的方式编辑您的问题,以便现有的回答您原始问题的答案不再这样做。而是问一个新问题。我意识到这一点,但是否有可能在任务管理器中创建第二个进程,当其中一个进程被终止时,它会重新打开?Op希望在用户关闭应用程序时,它会被检测到并重新启动,或者在没有swing的情况下完全阻止关闭。指向您给出的问题的链接只提供了一种重新启动的方法,而没有关于如何检测应用程序关闭的信息。虽然我不是这方面的专家,但有一个概念,它可能有助于检测应用程序的关闭。在我的回答中,我写道,您不能阻止应用程序关闭。关闭钩子可以用来在关闭应用程序之前运行一些代码,但不能阻止它被关闭。关闭钩子对Ctrl-C kill-9无论如何都不起作用。我已经有了这样做的想法,我编辑了OP,我只需要一个关于如何创建第二个“看门狗”进程的示例。谢谢: