gpt4 book ai didi

java - 关闭java应用程序时表单不会消失

转载 作者:行者123 更新时间:2023-12-01 04:41:37 25 4
gpt4 key购买 nike

我创建了一个钩子(Hook),在表单关闭时执行一些操作:

    Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
System.out.println("In shutdown hook");
String dataCrittare = "lgt%";
Date now=new Date();
SimpleDateFormat dateformat = new SimpleDateFormat ("yyyyMMdd-HHmm");
writer.println(dateformat.format(now));
writer.flush();
System.out.println("arrived?");
dispose();
System.exit(1);

}
}, "Shutdown-thread"));

看起来程序退出了,但屏幕上的窗体仍然被阻止,我不得不残酷地关闭它。有人知道为什么表格不消失吗?谢谢

最佳答案

当调用System.exit()时,关闭钩子(Hook)就会被调用。您不应该在关闭 Hook 内调用 System.exit(),因为 JVM 已经处于终止状态。在 addShutdownHook() 内部,对 System.exit() 的调用在 Shutdown.exit() 处死锁(从 System 调用) .exit())。甚至那里的评论也说:

        /* Synchronize on the class object, causing any other thread
* that attempts to initiate shutdown to stall indefinitely
*/

表单关闭时不会调用您的关闭 Hook !(除非您有一些 JFrame.setDefaultCloseOperation(EXIT_ON_CLOSE) 等。)

关于java - 关闭java应用程序时表单不会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16424653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com