摇摆系统。在java中退出(0)
我正在使用swing编写一个应用程序。我需要通过单击JButton
退出应用程序,因为我可以使用System.exit()
或者应该使用其他一些方法,这是最佳实践。如果调用System.exit()
不是最佳做法,那么请说明原因并说明退出应用程序的替代方法
你可以在下面搜索框中键入要查询的问题!
我正在使用swing编写一个应用程序。我需要通过单击JButton
退出应用程序,因为我可以使用System.exit()
或者应该使用其他一些方法,这是最佳实践。如果调用System.exit()
不是最佳做法,那么请说明原因并说明退出应用程序的替代方法
# 1 楼答案
如果需要为应用程序设置退出代码,则必须使用系统。退出(我想)
但是当您不需要特定的代码(或者0是可以的)时,我更愿意让JVM“自然”终止,当没有更多(非守护进程)线程时就会发生这种情况
通常情况下,您只需完成主要方法
我会小心使用这个系统。退出,因为可能还有其他线程仍需要执行某些操作,而在未正确关闭它们的情况下退出可能会导致损坏。例如,嵌入式数据库可能仍然需要刷新其缓冲区
如果您了解这些线程,通常可以安排它们优雅地结束。如果您不知道程序中正在运行哪些线程,则会遇到更大的问题
# 2 楼答案
一般来说,除了应用程序的“main”方法之外,在任何地方调用
System.exit(...)
都可能有问题,原因至少如下这是重用代码的障碍
这使得单元测试变得困难。例如,如果您的代码在JUnit测试执行一些错误处理时调用
System.exit
,那么它将结束您的测试序列在按钮侦听器中为“exit”按钮调用
System.exit(...)
的具体情况并不糟糕。您不太可能希望在不需要这种行为的地方重用按钮侦听器。此外,您可能还可以找到解决单元测试难题的方法;e、 g.不要对特定的方法进行单元测试然而,我想我还是会尝试以不同的方式退出。例如,让
main
方法启动所有内容,然后阻塞倒计时闩锁,然后让按钮侦听器减少闩锁。当main
方法解除阻塞时,它执行相关的关闭代码,并根据需要返回或退出# 3 楼答案
系统。至少当您有多个线程或资源需要正确关闭(位于JVM之外)时,退出可能是不好的。如果您的应用程序在您认为应该退出的时候没有退出,那么您应该找出问题所在,而不仅仅是调用系统。退出()
调用系统的唯一原因。exit()将给出一些非标准的退出代码
# 4 楼答案
但是,在大多数情况下,像大多数开发人员一样,我依赖于
System.exit(/an exit code/)
,特别是对于Swing应用程序,正如justkt所写,Swing EDT将无休止地运行。。这个方法的已知drawxback是大多数应用程序代码都没有被调用,我通过调用Runtime.addShutdownHook(Thread)
设置一个关闭钩子来避免这种情况,这将允许我清理应用程序(关闭线程,等等)# 5 楼答案
一般来说,你唯一需要做一个系统的时候。exit(n)是指您希望退出带有错误代码的命令行程序,以便监视该程序的任何程序都可以检测到错误代码
例如,如果您正在编写一个设计为从shell脚本运行的程序,那么这是最有用的
不过,正如其他回复所说,如果您正在使用线程,那么在考虑系统之前,您必须尽一切努力优雅地关闭它们。出口(n)