Java安全应用程序关闭

时间:2014-10-19 20:39:20

标签: java

关闭像这样的大型Java应用程序是否安全(和正确)?假设用户点击了一个关闭动作或退出。

AppView av = new AppView(); //suppose using mvc approach
for (Frame frame : Frame.getFrames()) {
    av.dispose();
}
System.exit(0);

2 个答案:

答案 0 :(得分:1)

取决于您的申请。如果你有一个多线程环境,你也可能想告诉其他线程停止(并给他们一些时间来完成他们正在做的事情,或者至少在必要时保存他们的状态)。还要考虑守护程序线程与普通线程。

如果你没有启动任何额外的线程,我认为这将是相当不错的。但同样,如果您安装了一些窗口关闭侦听器,他们可能会做一些最终会搞乱其他帧的事情。再说一遍:这一切都取决于你的申请。

答案 1 :(得分:1)

您可以使用或不使用System.exit(0);来停止您的应用程序。这种情况取决于您的应用程序的性质,如果有多个线程,如果它使用外部资源,如果它服务于其他应用程序。那么让# 39;谈论那些案件。

资源管理: 每当您打开之前必须关闭的资源时,Java 7都会为资源管理添加一项新功能,以便使用try-with-resources自动关闭资源,同时检查this article。文件资源未关闭时可能出现的风险示例是文件查找(在某些操作系统中)。

提供其他应用: 如果您的应用程序旨在以某种方式为其他应用程序提供服务(例如套接字通信),那么一方面,您必须处理在协议级别中断通信的情况,您应该告诉连接的应用程序,另一方面,你必须如前所述管理使用过的资源。糟糕的协议概念可能导致无限的等待。

多线程: 如果您的应用程序启动多个线程,那么您必须处理一个中央类,如果安全的方式管理应用程序的停止操作,应该通知每个启动的线程应用程序将被停止,然后每个他们必须处理这个请求以准备结束。