我应该为每个新请求创建新的HttpClient吗?

时间:2011-08-27 06:52:19

标签: android

我已经有了api类,它有几种方法可以对我的服务执行http请求。在构造函数中,它创建HttpClient的实例。 Api实例在不同的线程中重用。它会导致交叉线程问题吗?

目前我看到两种方法使其线程安全:

  1. 为每个请求创建新的http客户端。
  2. 为每个线程创建单独的api类实例。

1 个答案:

答案 0 :(得分:2)

我得到了一个可能有帮助的类似question的答案。我基本上使用:

// Should be thread safe
public class HttpClientFactory {

            private static DefaultHttpClient client;

            public synchronized static DefaultHttpClient getThreadSafeClient() {
                    if (client != null)
                            return client;
                    client = new DefaultHttpClient();
                    ClientConnectionManager mgr = client.getConnectionManager();
                    HttpParams params = client.getParams();
                    client = new DefaultHttpClient(new ThreadSafeClientConnManager(params,
                                    mgr.getSchemeRegistry()), params);
                return client;

            }
    }

问题有完整的帖子。