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