我已经有了api类,它有几种方法可以对我的服务执行http请求。在构造函数中,它创建HttpClient的实例。 Api实例在不同的线程中重用。它会导致交叉线程问题吗?
目前我看到两种方法使其线程安全:
答案 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;
}
}
问题有完整的帖子。