Java新手在这里。这是交易:我有以下简单的关机钩子:
class SHook implements Runnable {
public void run() {
System.out.println("SH is done.");
}
}
我有一个带有 TextArea 的 GUI 应用程序,输出被重定向,因此消息显示在那里。它的窗口监听器再次非常简单:
public class MyAdapter extends WindowAdapter {
public void windowClosing(WindowEvent w){
System.exit(0);
}
}
当我使用 [X] 按钮关闭 GUI 应用程序时,消息会在整个关闭之前显示一瞬间。这里没有错。
我想做的是:消息打印后,等待几秒钟,足以清楚地看到消息已打印。由于应用程序仍会立即关闭,因此向run方法添加睡眠或等待或其他任何内容似乎都不起作用。
我猜shutdown-hook实际上正在正常工作,只是应用程序不在乎并立即关闭GUI,而我的钩子在Java边缘的某个地方打印了它的消息。
那是对的吗?如果是,是否有任何简单的方法来确保 GUI 应用程序仅在关闭挂钩完成后关闭,而不使关闭挂钩成为非关闭挂钩?