对 CloseableHttpClient 使用 try-with-resource 块是否也会关闭返回的 CloseableHttpResponse?

Does using a try-with-resource block for CloseableHttpClient also close the returning CloseableHttpResponse?

如果 try-with-resource 只关闭 CloseableHttpClient 或者也关闭响应,我正在尝试锻炼。

例如,

private static CloseableHttpResponse sendRequest()
        throws IOException
{
    final HttpUriRequest httpUriRequest =
            buildRequest(url, requestMethod, requestParameters, httpHeaders);

    try (CloseableHttpClient client = HttpClientBuilder.create().build())
    {
        return client.execute(httpUriRequest);
    }
}

我们都知道这将按预期关闭 CloseableHttpClient。那那个电话的结果呢? CloseableHttpClientreturns一个CloseableHttpResponse。这是否也需要在调用代码或其他地方关闭?或者它是否与 CloseableHttpClient 同时关闭 try-with-resource?

奖金问题:我如何向自己证明事情实际上正在关闭?我正在查看 IntelliJ 中的线程池,但无法完全锻炼 where/when 事情即将结束。

try-with-resource只会关闭try子句中声明的资源

try (CloseableHttpClient client = HttpClientBuilder.create().build())

例如它只会关闭变量"client"

此外,如果响应被关闭,提取数据将成为一个问题,因此关闭它的责任应该落在其他地方。

Jhilton给出的答案完全正确(我的+1)。但是,就 HttpClient 特定资源管理而言,关闭 HttpClient 实例会导致关闭所有保持活动和活动的连接,包括当前与 HttpResponse 实例关联的连接。这实质上意味着如果关闭用于执行消息交换的 HttpClient 实例,则不必关闭 HttpResponse 实例,但非常不鼓励这种模式。