【发布时间】:2013-04-06 17:42:20
【问题描述】:
我使用org.apache.http.client.HttpClient。我有一个关于使用这个类的问题。
我应该为每个请求创建一个新的HttpClient(例如,因为它是一个轻量对象)还是最好为每个 http 请求使用一个唯一实例(例如,因为创建/删除很昂贵)?
如果只需要使用HttpClient 的一个实例,那么HttpClient 线程是否安全(例如,它可以同时处理许多http 请求)或者在这种情况下最好创建一个HttpClients 池?
实际上,我为每个请求创建了一个新的 HttpClient。我怀疑我必须使用getConnectionManager().shutdown()创建一个唯一的实例,以便在我的应用程序使用结束时关闭,但我不知道我是否可以保持基于线程的并行性。
【问题讨论】:
-
提示 -
DefaultHttpClient带有@ThreadSafe注释。 -
哦,很好...所以我认为它应该每次处理多个 http 请求。
-
是的。 More here。看看
Reuse the HttpClient instance。 -
这适用于 v3.1。它适用于 v4 吗?
-
然而,似乎对 v4 也是合理有效的。这是令人信服的!请发布我的问题的完整答案。
标签: java http connection apache-httpclient-4.x