1

我正在构建一个 jar 来打开一些进程外资源。(顺便说一句,我必须采用这种方法)。

但是我想要做的是关闭这些资源——理想情况下使用我编写的 jar 中的函数——当虚拟机即将关闭该 jar 时。

我该怎么做呢?我宁愿避免使用 JNI,尽管资源的性质使得我已经将这个 jar 限制在 Windows 中。丑我知道。

我可以可靠地依赖带有终结器的单例吗?

4

1 回答 1

5

你不能依赖终结器,我会使用关闭钩子来代替:

一个非常简单的例子:

Runtime.getRuntime().addShutdownHook(
    new Thread() {
        public void run() {
            //Your shutdown logic here
        }
    }
);

如果线程内的代码增长,您可能不应该使用匿名类。您可以将所有资源传递给线程并在线程内关闭它们。

更多信息可以在这里找到:http ://waheedtechblog.blogspot.de/2012/03/java-jvm-shutdown-hook-tutorial.html

于 2013-07-05T14:34:11.747 回答