任何人都可以帮我澄清 HttpClient
在多线程中的行为吗?
当我通过下面的代码创建 HttpClient
对象时,我应该在整个应用程序生命周期中全局保留该对象(HttpClient
文档中建议使用此方法),还是应该我每次想要执行 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 连接不会互相阻塞并确保它们可以并发运行的最佳方法是什么?
最佳答案
使用 PoolingConnectionManager 并配置每个路由所需的连接数(确保连接数与使用它们的线程数一样多)。然后你可以简单地在任何地方注入(inject)相同的httpclient。我已经这样使用它好几年了。
还考虑在任何地方使用 ResponseHandlers;这极大地简化了资源和连接的释放。
关于java - 多线程和并发上下文中的 HttpClient 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22163325/