httpclient连接池注意事项

目录

实例

参数

配置重要参数

导致问题

源码

正确的事例

httpclient官网


使用MultiThreadedHttpConnectionManager来配置线程池连接数量等等。

实例

MultiThreadedHttpConnectionManager connectionManager = 
      		new MultiThreadedHttpConnectionManager(); 
      	HttpClient客户端=新的HttpClient(connectionManager); 
			... 
        //然后从执行方法的某个线程内部
        GetMethod get = new GetMethod(“http://httpcomponents.apache.org/”); 
        尝试{ 
            client.executeMethod(get); 
            //打印对stdout 
            System.out.println的响应(get.getResponseBodyAsStream()); 
        } finally { 
            //确保连接被释放回连接
            // manager 
            get.releaseConnection(); 
        }

 

参数

MultiThreadedHttpConnectionManager支持以下选项:

connectionStaleCheckingEnabled该connectionStaleCheckingEnabled标志上的所有创建的连接设置。除特殊情况外,该值应保留为真。有关 更多详细信息,请参阅 HttpConnection文档。
maxConnectionsPerHost将为任何特定HostConfiguration创建的最大连接数。默认为2。
maxTotalConnections

最大活动连接数。默认为20。

 

配置重要参数

有两个重要参数:MaxTotalConnections,MaxConnectionsPerHost(默认为2)

这两个参数同时影响连接数大小,如果只配置一个参数的话,会导致总连接数为2->MaxConnectionsPerHost

 

导致问题

n多连接上来而无法从ConnectManager中获取连接,导致很多线程阻塞,占用端口

源码

转自https://mp.weixin.qq.com/s?__biz=MzIwMDY0Nzk2Mw==&mid=2650320462&idx=1&sn=393196c09dc30e7c295266c5dfbfdcd3&chksm=8ef5fa3ab982732c5adc921f9bb07de0713eb0531d5132c62de2fc4abdcd105e82446a90b91c&mpshare=1&scene=24&srcid=0720oqwh3wVW7ZYd27wo5vgi#rd 

正确的事例

             final String url= "http://www.taobao.com" ;  
             final HttpClient client = new HttpClient();  
             final MultiThreadedHttpConnectionManager connectionManager = new 
             MultiThreadedHttpConnectionManager();  
             connectionManager.setMaxTotalConnections (1);//总的连接数  
             connectionManager.setMaxConnectionsPerHost (2);//每个host的最大连接数  
             client.setHttpConnectionManager( connectionManager );  

httpclient官网

threading目录下

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值