直到最近,我们的应用程序在整个应用程序中使用ThreadSafeClientConnManager共享一个Apache HttpClient实例。 http客户端实例由单例类保存。
由于我不喜欢单例模式存在的众多问题,我将我的API访问器重构为每线程对象,但现在对于每个线程(在我们的例子中主要是指每个Activity / Service),都会创建一个新的HttpClient实例
这并不是我在使用这种新方法时遇到问题,但我已经读过Apache人员建议每个应用只有一个实例,以提高性能。
从视觉上看,我们之前做过的是:
HttpClient (thread safe)
|
|
/\
/ \
Activity1...ActivityN
现在,我们这样做:
Activity1 ... ActivityN
| |
| |
HttpClient1 HttpClientN
你们如何在你的应用程序中执行此操作?如果您在应用程序中共享一个HttpClient,并且可能有多个并发线程,那么如何处理对它的访问?
答案 0 :(得分:12)
简而言之:
创建org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager
的实例,并在构造DefaultHttpClient时使用它。
示例来源链接: HttpClient multithreaded access
编辑:抱歉,在发布之前没有看到您的编辑。在这种情况下,“单身人士”没有任何内在错误。