为了账号安全,请及时绑定邮箱和手机立即绑定

httpClient可以复用吗?

httpClient可以复用吗?

炎炎设计 2019-05-22 17:40:33
比如这个util每次调用doGet时生成一个httpClient实例publicstaticStringdoGet(Stringurl,Mapparam){//创建Httpclient对象CloseableHttpClienthttpClient=HttpClients.createDefault();难道不可以在这个util类中加httpClient的静态实例成员吗,所有doGET,doPost调用都用同一个httpClient的静态实例成员,如下publicclassHttpClientUtil{privatestaticCloseableHttpClienthttpClient=HttpClients.createDefault();publicstaticStringdoGet(Stringurl,Mapparam){....response=httpClient.execute(httpGet);
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

可以共用同一个客户端,需要管理好链接关闭网络资源回收即可,防止长期使用造成内存泄漏
EDITED:
是的,要关闭responseentity和相关的stream,同时在应用重新加载时要关掉HttpClient,HttpClient关掉还能不能用取决于ClientConnectionManager的实现,不关似乎也没啥问题,如果你的应用加载都是重户jvm的话.其实你不关,connection也会超时,超时后也要重新建立链接.只是相应资源会长时间占用而已.占用多少?要不要管理,一定是需求+测量再决定.
至于并发的问题,如果MultiThreadedHttpConnectionManager可以支持多线程并发的.PoolingHttpClientConnectionManager也是可以的.看一下类名是否则有@ThreadSafe注解就知道了.
                            
查看完整回答
反对 回复 2019-05-22
  • 2 回答
  • 0 关注
  • 1793 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信