gpt4 book ai didi

java - 在java应用程序中使用ShutdowHook有什么好处

转载 作者:行者123 更新时间:2023-12-02 11:46:55 26 4
gpt4 key购买 nike

我接触过Shutdownhook并学习如何使用它。
可以注册ShutdownHook它将在 JVM 停止之前由 JVM 调用。
我们可以在 ShutdownHook 中添加一些清理工作比如删除临时文件等等。
好吧,它看起来确实像是一种优雅地关闭当前应用程序的方法。
然而,我对使用它而不是仅仅在 Swing 应用程序 的 WindowCloseListener 中添加清理操作感到有点困惑。

取下面的样本,

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ShutdownhookSample {
public static void main(String args[]){
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(50, 50));
panel.setBackground(Color.yellow);
frame.add(panel);
frame.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e){
frame.dispose();
System.out.println("Close from listener...");
/**
* Add cleanup operations here
*/
}
});
frame.pack();
frame.setVisible(true);

Runtime.getRuntime().addShutdownHook(new Thread(){
@Override
public void start(){
System.out.println("Close from shutdownhook...");
/**
* Add cleanup operations here
*/
}
});

}
}

无论我通过退出按钮还是通过 Windows 任务栏中的“关闭窗口”选项关闭应用程序,Windows 都会关闭监听器和 ShutdownHook叫做。唯一的区别是 ShutdownHook 的调用比 Windows 关闭监听器稍晚一些。是的,如果我强制关闭该进程,则不会有人打电话。

所以这是我的问题:

真的需要使用ShutdownHook吗?在 Swing 应用程序中?看来 Windows 关闭监听器足以处理清理操作。是否存在windows close监听无法覆盖而ShutdownHook可以覆盖的情况?

最佳答案

如果您需要这样做,则可以使用功能 X。现有功能 X 不足以使用它!

换句话说:当您创建非 UI 应用程序时,关闭 Hook 会派上用场。或者当关闭主窗口时并没有退出您的应用程序。想象一个在后台持续运行并且可以通过某些托盘栏图标复活的应用程序。

关于java - 在java应用程序中使用ShutdowHook有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48135218/

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