【发布时间】:2015-05-12 06:56:09
【问题描述】:
我有一些我称之为deleteOnExit() 的临时文件。
我还有一个在addShutdownHook() 注册的可运行文件,以便在调用System.exit 时运行。
是否可以保证在我的关闭挂钩运行时临时文件仍然可用?
【问题讨论】:
-
我不确定它是否由任何规范保证,但 that's the way OpenJDK (and hence the Oracle JDK) does it - deleteOnExit 挂钩在正常关闭挂钩之后运行。
-
有一个bug report about implementing deleteOnExit with shutdown hooks。根据this comment deleteOnExit 应该在关闭钩子执行后运行
-
我相信你可以证明 JVM 中没有 Java 代码应该看到删除已经发生。
-
我相信你可以证明它没有在任何地方指定,因此你的代码不应该依赖任何排序。
标签: java java-io shutdown-hook