多线程和并发上下文中的HttpClient行为

时间:2014-03-04 05:00:52

标签: java http httpclient

任何人都可以帮我澄清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连接不会相互阻塞并确保它们可以同时运行的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

使用PoolingConnectionManager并配置您需要的每个路由的连接数(确保您拥有与使用它们的线程一样多的连接)。然后你可以简单地在任何地方注入相同的httpclient。几年来我一直在使用它。

还要考虑到处使用ResponseHandler;这极大地简化了资源和连接的释放。