我正在使用 Apache DefaultHttpClient与 PoolingClientConnectionManager和 BasicResponseHandler 。这些在不同线程之间共享,每个线程创建自己的 HttpRequestBase 扩展。
使用 BasicResponseHandlers 时,我是否需要手动告诉经理我已完成连接使用?我是否需要将其包装在finally中,这样异常就不会导致连接泄漏?
换句话说,我需要这样做吗
HttpGet get = new HttpGet(address);
try {
httpclient.execute(get, new BasicResponseHandler());
} finally {
get.reset();
}
或者这样就足够了吗?
HttpGet get = new HttpGet(address);
httpclient.execute(get, new BasicResponseHandler());
我在 Apache documentation. 中没有看到明确的答案
最佳答案
这已经足够了,值得推荐。
HttpClient#execute
方法保证在出现异常(I/O 或运行时)时自动释放与请求关联的所有资源。当使用 ResponseHandler 处理 HTTP 响应时,所有情况下底层连接都会自动释放回连接管理器。
关于java - 使用 PoolingClientConnectionManager 时释放连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13728948/