当我按下ALT+F4(Win)或CMD+Q(Mac)退出程序时,程序会挂起,直到我使用任务管理器强制退出为止。
但是,当我使用eclipse的终止按钮终止程序时,程序可以很好地关闭,而不会挂起。
关闭应用程序的两种方法有什么区别?
例如,当我们执行常规退出(即ALT+F4)时,应用程序中的线程不会自行终止,而在eclipse中,线程是“被迫”终止的吗?
编辑 我刚刚意识到
System.exit(0)
等同于“强制退出”(即不挂起)。有什么方法可以检测ALT+F4或CMD+Q何时被按下,然后系统/程序就会执行System.exit
? 编辑2 我做了以下工作,但问题仍然存在:
ALT+F4
之后哪些线程仍在运行。我确实意识到一些“池-我线程-i”线程仍在运行。(有任何方法来指出密码的哪一部分代表“池-i线程-i”?我怀疑这些线程是我使用过的第三方库创建的。)ALT+F4
程序时,控制台输出将显示出来。例如,public Void call() {
while(true) {
}
System.out.println("Thread has finished");
}
当我按下“线程已完成”时,控制台将打印“
ALT+F4
”,因此我假设这些线程已正确结束。
发布于 2014-04-03 23:52:40
Eclipse按钮基本上执行任务管理器中的强制退出--它强制终止进程。Alt+F4或CMD+Q会通知程序被终止,这应该是及时的响应;如果没有,您将在Windows中得到无响应的程序警报。
https://stackoverflow.com/questions/22850485
复制相似问题