我开发一个Java独立的应用程序,其中有上传批处理文件来REST API。我希望在需要从命令提示符下停止应用程序,但如果应用程序正在上传文件,则必须完成该操作,并且必须在开始上传另一个文件之前停止该应用程序。如何停止从命令提示符下的Java应用程序正常
回答
你可以做你的应用程序的退出代码JVM关闭挂钩的isUploading标志进行快速检查。如果为false,请继续退出。如果为true,请等待上载过程完成或超时。
谢谢你回答raychz。我用了两个标志。以下是我用过的示例代码。 – jaswanth
它不能阻止你希望的任何时间,因为(我认为)你的程序在单个线程中运行,因此必须完成的顺序每个任务它被赋予。
当上传文件的列表,你可以提供一些听众的在前面的一个线程,同时上传文件的背景。当Thread1收到它需要退出的信息时,它可以设置某种全局布尔值,它在线程2开始上传第二个文件之前进行检查。
制作上传过程在后台线程可以让你在这个过程中修改程序。
如果你对一般优雅地退出程序寻找文件,它可以在这里找到:http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#exit%28int%29
感谢您的回答。我使用shutdown hook实现,并使用全局布尔值,就像你说的那样。 – jaswanth
公共类主要{
public static void main(String[] args) {
Runtime r = Runtime.getRuntime();
r.addShutdownHook(new ShutdownHook());
while(Flag.flag){
System.out.println("Application is still running......");
}
if(!Flag.flag) {
System.out.println("goin to exit the application");
Flag.shutdownFlag = false;
return;
}
}
}
公共类标志{
public static boolean flag = true;
public static boolean shutdownFlag = true;
}
公共类ShutdownHook继承Thread {
public void run() {
System.out.println("Shutdown hook is initiated");
Flag.flag = false;
while (Flag.shutdownFlag) {
System.out.println("Waiting for application to complete the task..");
}
}
}
我在命令提示符下运行jar。只要我们想停止应用程序,我们可以在命令提示符下输入ctrl + c。
- 1. 如何在命令提示符下运行Java程序
- 2. 命令提示符Rails应用程序
- 3. 如何从命令行停止mule应用程序?
- 4. 如何获取命令提示符(cmd)以停止打开关联的程序?
- 5. 从命令提示执行java程序
- 6. 如何停止从命令行执行Java程序?
- 7. 在命令提示符下使用c#为wpf应用程序执行命令
- 8. Spring Security - 防止AccessDeniedException从停止应用程序正常流程
- 9. 从命令提示符使用javac编译java程序
- 10. 命令提示符工作不正常
- 11. 如何通过命令提示符运行c#应用程序?
- 12. 如何重新启动C++命令提示符应用程序?
- 13. 在Windows中从闪烁的命令提示符停止vim?
- 14. 双命令在命令提示符下运行程序
- 15. 无法从Windows 7的命令提示符编译java程序
- 16. 如何从命令提示符下使用C++提取信息?
- 17. 如何从命令行Java应用程序更改命令提示符(控制台)窗口标题?
- 18. 如何停止关闭命令提示符
- 19. 从命令提示符应用程序创建WPF窗口
- 20. 从命令提示符运行RMI应用程序
- 21. 从命令提示符编译BADA应用程序
- 22. Visual Studio命令提示符与常规命令提示符?
- 23. 如何从我的应用程序@Client端打开命令提示符
- 24. 如何从Android应用程序访问Windows的命令提示符
- 25. 如何停止Java应用程序?
- 26. 如何正常停止YARN上的Spark Streaming应用程序?
- 27. 如何在命令提示符下运行java程序,由intellij创建
- 28. 在java web应用程序运行时显示命令提示符的进度
- 29. 如何从命令提示符以管理员身份打开应用程序?
- 30. 用于更改命令提示符目录的Java程序
我建议做对非守护线程,以及如何在JVM退出一些研究。 https://stackoverflow.com/questions/2213340/what-is-daemon-thread-in-java – Steve