2012-03-28 252 views
0

我有一个游戏机器人,它通过控制台运行。我不认为我会为它编写一个gui,但我希望有可能在没有CTRL + C的情况下关闭程序,因为这只会中断我的程序,而不是正确清理代码并确保它们没有泄漏。Java控制台应用程序清理

我应该使用索姆类键绑定还是我必须做一个GUI? 或者我该怎么办?

+1

在这里回答? - http://stackoverflow.com/questions/1216172/java-how-could-i-intercept-ctrlc-in-a-cli-application – 2012-03-28 21:10:02

回答

5

我认为这就是shutdown hook的用途。

Runtime.getRuntime().addShutdownHook(new Thread() { 
    @Override 
    public void run() { 
     System.out.println("Application shutdown"); 
    } 
}); 
+0

甜。不知道这件事。谢谢! ;) – 2012-03-28 21:22:52

+0

任何想法如何通过eclipse终止应用程序(在开发过程中)如何工作? – Michael 2016-04-11 08:11:33

1

David的回答很好。它可能适合你。

我通常不希望故意中止一个进程,然后检测到它正在下降以避免悬挂操作。所以我可能会更喜欢:

您是否在处理控制台输入时输入?如果是这样,你可以只需要一个控制台命令来告诉应用程序关闭,并在无论你的过程是处理控制台输入时检查它。或者,如果你的意思是应用程序只是在没有用户输入的情况下运行,那么你可以定期检查控制台缓冲区是否为空(Console.reader()。ready()),如果没有,请阅读控制台并查看是否退出命令。