比如这个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注解就知道了.
添加回答
举报
0/150
提交
取消