启动java命令行应用程序很简单,只需在命令提示符中(在应用程序所在的目录中)编写以下行。
java myApp.java
但是,要以正确的方式停止应用程序,以确保清除所有非托管资源(以及在停止之前必须完成的任何操作),需要自定义代码。
该应用程序将在debian系统中运行,没有GUI作为守护程序(它将在后台运行)。
下面我写下代码的骨架。
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运行并且不会停止,直到您不能停止它为止。 杀死进程(正如有些人的建议)不是一个好的解决方案,因为(例如)某些非托管资源可能无法正确清理。
我需要一个能够改变布尔变量的代码" stop"来自 OUTSIDE 。
最好的解决方案是使用类似于start命令的命令停止应用程序的解决方案,请参阅下面的伪代码(在命令提示符中,在myApp.java所在的目录中执行)。
myApp.java stop=true
但是如果它不可能,那么第二个选择是使用另一个java命令行应用程序,它会停止myApp.java,这样我就可以使用以下代码停止myApp.java
java stopMyApp.java
有人能够建议一个有用的代码示例吗?
答案 0 :(得分:1)
您可以使用包含一个单词的文本文件。你的程序每x秒读取一次,并根据该字自动停止。
您可以手动或使用您可以随时运行的其他程序更改文件文本内容。
更好的是,当文件发生变化时,您可以使用WatchService API(Java 7)或VFS API from Apache Commons收到通知。
如果您使用数据库,则可以使用它而不是普通文件。