Java 在程序执行结束时调用方法
我正在为API端点创建一个客户端库,用于模拟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
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()
方法多少次,它都只会安装一次关闭挂钩。是否有方法使用运行时检查,或者只使用布尔值?