首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache HttpClient官方示例--发布资源方法

Apache HttpClient官方示例--发布资源方法
EN

Stack Overflow用户
提问于 2015-05-19 22:03:06
回答 1查看 256关注 0票数 1

在Apache HttpClient的这个官方示例中,没有提到释放请求或响应对象。它们是作为httpclient.close()的一部分发布的,还是releaseResources方法需要被某些东西覆盖?

代码语言:javascript
复制
final CountDownLatch latch2 = new CountDownLatch(1);
final HttpGet request3 = new HttpGet("http://www.apache.org/");
HttpAsyncRequestProducer producer3 = HttpAsyncMethods.create(request3);
AsyncCharConsumer<HttpResponse> consumer3 = new AsyncCharConsumer<HttpResponse>() {

    HttpResponse response;

    @Override
    protected void onResponseReceived(final HttpResponse response) {
        this.response = response;
    }

    @Override
    protected void onCharReceived(final CharBuffer buf, final IOControl ioctrl) throws IOException {
        // Do something useful
    }

    @Override
    protected void releaseResources() {
    }

    @Override
    protected HttpResponse buildResult(final HttpContext context) {
        return this.response;
    }

};
httpclient.execute(producer3, consumer3, new FutureCallback<HttpResponse>() {

    public void completed(final HttpResponse response3) {
        latch2.countDown();
        System.out.println(request2.getRequestLine() + "->" + response3.getStatusLine());
    }

    public void failed(final Exception ex) {
        latch2.countDown();
        System.out.println(request2.getRequestLine() + "->" + ex);
    }

    public void cancelled() {
        latch2.countDown();
        System.out.println(request2.getRequestLine() + " cancelled");
    }

});
latch2.await();

} finally {
    httpclient.close();
}
EN

回答 1

Stack Overflow用户

发布于 2015-05-19 23:17:45

只有当使用者使用文件、管道等系统资源时,才需要重写#releaseResources()。如果响应内容总是保存在内存中,它就会以正常的方式获取GCed。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30327923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档