【发布时间】:2019-03-31 20:56:37
【问题描述】:
我正在用 Java 制作一个应用程序,我希望始终以最少的保存操作将数据保存到文件中。换句话说,每当应用程序关闭或抛出异常时,它都会首先尝试保存。一个问题:电源按钮。当用户按住计算机的电源按钮时,它会强制操作系统关闭。现在,我究竟如何让 Java 检测到即将到来的关闭,或者 JVM 会先关闭系统(因此调用关闭挂钩)?
【问题讨论】:
-
那个按钮在硬件级别上运行,所以...不。
-
@JanDvorak 好的。感谢您的评论!
-
如果操作系统在应用程序仍在运行时正常关闭,您实际上可以使用关闭挂钩。看看shutdown hooks。但是,就像@Jan 说的那样,你无能为力。
-
这是一种可以为您的应用程序设置关闭挂钩的方法:
Runtime.getRuntime().addShutdownHook(new Thread() { ... }。在“关机”的情况下,它不会被触发,所以我建议您使用一些调度程序定期保存您的数据。 -
您可能不喜欢的另一件事:杀死应用程序也不会触发关闭挂钩。但至少磁盘写入缓冲区中的数据不会丢失。不过,您未刷新的应用程序级缓冲区是。
标签: java shutdown shutdown-hook