新冠疫情防控平台项目基础(2.2HttpClient的连接池)

HttpClient的连接池

 HttpClien中使用了连接池来管理持有连接,同一条TCP链路上,连接是可以复用的。HttpClient通过连接池的方式进行连接持久化。
 其实“池”技术是一种通用的设计,其设计思想并不复杂:

  1. 当有连接第一次使用的时候建立连接
  2. 结束时对应连接不关闭,归还到池中
  3. 下次同个目的的连接可从池中获取一个可用连接
  4. 定期清理过期连接

代码实现

public void testPool() throws IOException {
        //1.创建HttpClient连接管理器
        PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();

        //2.设置参数
        cm.setMaxTotal(20);//设置最大连接数
        cm.setDefaultMaxPerRoute(20);//设置每个主机的最大并发

        doGet(cm);
        doGet(cm);
    }
    private void doGet(PoolingHttpClientConnectionManager cm) throws IOException {
        //3.从连接池中获取HttpClient对象
        CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();
        //在这里加上断点观察到每次从池中获取到一个不同的HttpClient对象
        //4.创建HttpGet对象
        HttpGet httpGet = new HttpGet("http://www.itcast.cn/");
        //5.发送请求
        CloseableHttpResponse response = httpClient.execute(httpGet);
        //6.获取资源
        if((response.getStatusLine().getStatusCode()) == 200){
            String html = EntityUtils.toString(response.getEntity(),"UTF-8");
            System.out.println(html);
        }
        //7.关闭资源
        response.close();
        //httpClient.close();注意这里不要关闭HttpClient,因为使用连接池,HttpClinet对象使用完之后要还回到池中
    }

以上文字内容转自

https://www.cnblogs.com/kingszelda/p/8988505.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值