httpClient可以复用吗?

比如这个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);
炎炎设计
浏览 1794回答 2
2回答

暮色呼如

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

相关分类

JavaScript