任何人都可以帮我澄清HttpClient
在多线程中的行为吗?
当我通过下面的代码创建HttpClient
对象时,我是否应该在整个应用生命周期内保持对象全局(此方法在HttpClient
doc中建议),或者我应该每次创建时都创建想要执行Http连接(Get和Post)?
1)
Static HttpClient httpclient = HttpClientBuilder.create().build(); //so we can use this object in everywhere.
2)
HttpClient httpclient = HttpClientBuilder.create().build(); //do this every time when we want to establish http connect.
确保Http连接不会相互阻塞并确保它们可以同时运行的最佳方法是什么?
答案 0 :(得分:1)
使用PoolingConnectionManager并配置您需要的每个路由的连接数(确保您拥有与使用它们的线程一样多的连接)。然后你可以简单地在任何地方注入相同的httpclient。几年来我一直在使用它。
还要考虑到处使用ResponseHandler;这极大地简化了资源和连接的释放。