我对优雅地关闭 Java 命令行程序的不同方法感兴趣。发送终止信号不是一种选择。
我可以想到几种不同的方法。
- 打开端口并等待连接。完成后,优雅地关闭。
- 观察要创建的文件,然后关闭。
- 从终端读取一些输入,例如“执行关闭”。
第三种方法并不理想,因为经常有程序输出被输出到屏幕上。第一个需要太多努力(我很懒)。大多数程序员都使用第二个选项吗?如果不是,还有什么可能/优雅/简单?
你可以尝试这样的事情:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() { /*
my shutdown code here
*/ }
});
edit:
shutdown hook 不会执行应用程序的关闭。相反,它为开发人员提供了一种在关闭时执行他/她希望的任何清理的方法。
来自 JavaDocRuntime http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runtime.html#addShutdownHook(java.lang.Thread)(如果您打算使用此方法,请仔细阅读):
关闭钩子只是一个已初始化但未启动的线程。当虚拟机开始其关闭序列时,它将以某种未指定的顺序启动所有已注册的关闭挂钩,并让它们同时运行。当所有挂钩完成后,如果启用了退出时终结,它将运行所有未调用的终结器。最后,虚拟机将停止。 ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)