gpt4 book ai didi

java - 创建一个可停止的java程序(守护进程)

转载 作者:行者123 更新时间:2023-12-02 11:19:42 25 4
gpt4 key购买 nike

启动java命令行应用程序很容易,您只需在命令提示符中(在应用程序所在的目录中)编写以下行即可。

java myApp.java

但是,要以正确的方式停止应用程序,以便确保清除所有非托管资源(以及必须在停止之前完成的任何操作),需要自定义代码。

该应用程序将在没有 GUI 作为守护程序的 debian 系统中运行(它将在后台运行)。

下面我编写了代码的框架。

public class MainClass {

public static void main(String[] args) throws Exception {

boolean stop = false;

while(!stop){
doSomething();
}

stop();
}

private static void doSomething(){
//Main code of app here
}

private static void stop(){
beforeStop();

System.exit(0);
}

private static void beforeStop(){
clean();

//Code to do anything you have to do before stop
}

private static void clean(){
//Code to clean unmanaged resources
}

}

如您所见,该应用程序将 24/24 运行,并且在您不停止之前不会停止。终止进程(正如某些人建议的那样)并不是一个好的解决方案,因为(例如)某些非托管资源可能无法正确清理。

我需要一个代码,可以从OUTSIDE更改 boolean 变量“stop”。

最好的解决方案是使用类似于启动命令的命令来停止应用程序,请参阅下面的伪代码(在命令提示符下执行,在 myApp.java 所在的目录中)。

myApp.java stop=true

但如果不可能,第二个选择是使用另一个 java 命令行应用程序来停止 myApp.java,以便我可以使用以下代码停止 myApp.java

java stopMyApp.java

有人可以建议一个有用的代码示例吗?

最佳答案

您可以使用包含一个单词的文本文件。您的程序每 x 秒读取一次,并根据该单词自动停止。

您可以手动更改文件文本内容,也可以使用其他可以随时运行的程序来更改文件文本内容。

更好的是,您可以使用 WatchService API (Java 7) 或 VFS API from Apache Commons文件更改时收到通知。

如果您使用数据库,则可以使用它而不是普通文件。

关于java - 创建一个可停止的java程序(守护进程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50022425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com