Java 如果资源一直使用到流程结束,是否需要关闭该资源?

Java 如果资源一直使用到流程结束,是否需要关闭该资源?,java,resources,resource-cleanup,Java,Resources,Resource Cleanup,程序的终止是否有效地清理了资源,还是仍然需要明确地完成?如果样板没有好处,我就把它扔掉 我理解在资源使用时间短于项目生命周期的长期项目中的需求。但是,当资源(如单例HTTP客户机)一直使用到最后时会发生什么情况呢 1.没有明确的清理 当程序退出时,这个版本会清理吗 public static void main(String[] args) { CloseableHttpClient client = HttpClients.createDefault(); // execut

程序的终止是否有效地清理了资源,还是仍然需要明确地完成?如果样板没有好处,我就把它扔掉

我理解在资源使用时间短于项目生命周期的长期项目中的需求。但是,当资源(如单例HTTP客户机)一直使用到最后时会发生什么情况呢

1.没有明确的清理 当程序退出时,这个版本会清理吗

public static void main(String[] args) {
    CloseableHttpClient client = HttpClients.createDefault();

    // execute requests
}
2.使用try-with-resources进行清理 这个版本显然会清理,但需要额外的代码

public static void main(String[] args) {
    try (CloseableHttpClient client = HttpClients.createDefault()) {
        // execute requests
    } catch (IOException e) {
        // exception handling
    }
}
上的最新更新是创建内部尝试:

一个更详细的解释

答案是关闭方法用于关闭内部状态。HTTPClient的一些实现(在HTTPClient库中)可以配置为使用持久性资源,例如池连接的PooledHttpClientConnectionManager,如果没有这种方法,您无法在需要时清理这些资源


谢谢,但我的问题不是针对apache的。这应该是一个关于资源清理的一般性问题。进程终止会清理资源吗?@MartinTarjányi尝试使用resourcew block clean resources我的问题是关于没有尝试的版本block@MartinTarj我明白了,谢谢,这就是我想要的。
try (CloseableHttpClient httpclient = HttpClients.createDefault()) {