Java 如何编写';s在相应的jar卸载时调用

Java 如何编写';s在相应的jar卸载时调用,java,Java,我正在构建一个jar,它可以打开一些进程外资源。(顺便说一句,我必须采用这种方法) 但我想做的是在虚拟机即将关闭jar时关闭这些资源——理想情况下使用我编写的jar中的函数 我该怎么做?我宁愿避免使用JNI,尽管资源的性质是这样的,我已经将这个jar限制在windows上了。我知道 我能可靠地依赖具有终结器的单例吗?您不能依赖终结器,我将使用关闭挂钩: 一个非常简单的例子: Runtime.getRuntime().addShutdownHook( new Thread() {

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

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

我该怎么做?我宁愿避免使用JNI,尽管资源的性质是这样的,我已经将这个jar限制在windows上了。我知道


我能可靠地依赖具有终结器的单例吗?

您不能依赖终结器,我将使用关闭挂钩:

一个非常简单的例子:

Runtime.getRuntime().addShutdownHook(
    new Thread() {
        public void run() {
            //Your shutdown logic here
        }
    }
);
如果线程中的代码增长,您可能不应该使用匿名类。 您可以将所有资源传递给线程并在线程内关闭它们


更多信息可在此处找到:

您不能依赖终结器,我将使用关机挂钩:

一个非常简单的例子:

Runtime.getRuntime().addShutdownHook(
    new Thread() {
        public void run() {
            //Your shutdown logic here
        }
    }
);
如果线程中的代码增长,您可能不应该使用匿名类。 您可以将所有资源传递给线程并在线程内关闭它们

更多信息可以在这里找到:

+1这就可以了(我需要从头到尾阅读一本java书籍)。谢谢。+1就可以了(我需要从头到尾读一本java书)。谢谢