我已经得到并休息了 api 类,它有几种方法可以对我的服务执行 http 请求。在构造函数中它创建 HttpClient 的实例。 Api 实例在不同线程中重用。会不会造成跨线程问题?
目前我看到两种使其线程安全的方法:
- 为每个请求创建新的 http 客户端。
- 为每个线程创建单独的 api 类实例。
最佳答案
我有一个类似的答案 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;
}
}
问题有完整的帖子。
关于android - 我应该为每个新请求创建新的 HttpClient 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7212984/