繁体   English   中英

Java安全应用程序关闭

[英]Java secure application closing

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

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

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

如果您没有启动任何额外的线程,那么我认为这还可以。 但是同样,如果您安装了一些关闭窗口的侦听器,则它们可能正在做某些事情,这些事情最终可能会与其他框架混在一起。 再次:这完全取决于您的应用程序。

您可以在有或没有System.exit(0);情况下停止应用程序System.exit(0); 这种情况取决于您的应用程序的性质,是否有多个线程,是否使用外部资源,是否为其他应用程序服务,因此让我们仅讨论这些情况。

资源管理 :每当您打开资源时都必须先关闭,Java 7为资源管理添加了一项新功能,以使用try-with-resources自动关闭资源 ,另请参阅本文 当未关闭文件资源时可能出现的风险的一个示例是“文件查找”(在某些OS中)。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM