Java 在程序执行结束时调用方法

Java 在程序执行结束时调用方法,java,unirest,Java,Unirest,我正在为API端点创建一个客户端库,用于模拟GET和POST请求。程序完成后,必须调用以下代码以终止当前线程 Unirest.shutdown(); // must be called in order to clear the high CPU consuming thread 在程序执行结束时,是否有任何可能的方法在我的客户端库中隐式调用此函数?是-您最好的选择可能是使用关闭挂钩。它将在JVM终止时被调用/执行。例如: Runtime.getRuntime().addShutdownHo

我正在为API端点创建一个客户端库,用于模拟
GET
POST
请求。程序完成后,必须调用以下代码以终止当前线程

Unirest.shutdown(); // must be called in order to clear the high CPU consuming thread 

在程序执行结束时,是否有任何可能的方法在我的客户端库中隐式调用此函数?

是-您最好的选择可能是使用关闭挂钩。它将在JVM终止时被调用/执行。例如:

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
    public void run() {
        System.out.println("JVM shutting down, closing Unirest");
        Unirest.shutdown();
    }
}));

理想情况下,您应该在启动Unirest服务后尽快调用
addShutdownHook()
方法。

这就是您要找的吗?这看起来不错,但有没有办法在导入我的客户端库后隐式执行这段代码?我不确定我是否遵循了。您的代码是否负责启动库中的Unirest客户端?如果是这样,那么您应该在这里添加关闭挂钩。你不能(不应该)神奇地开始执行代码,除非被使用你的库的项目调用。是的,但是用户可以创建几个只需要一次关闭的请求。因此,在我的库的每个方法中创建几个关闭是没有意义的。在这种情况下,可能需要维护某种singleton或manager类,该类负责(使用布尔标志或类似标志)跟踪是否安装了钩子。因此,无论您调用此
UnirestManager.getOrCreateUnirest()
方法多少次,它都只会安装一次关闭挂钩。是否有方法使用
运行时检查,或者只使用布尔值?