多线程下的httpclient
来源:互联网 发布:windows预览体验计划吧 编辑:程序博客网 时间:2024/05/02 04:47
1.如果每开启一个线程,都new HttpClient(), 那么获取的内容会丢失。因为这不是线程安全的。
2.如果要让HttpClient在多线程下每次都得到完整的数据。分两步。
public class HttpClientFactory { private static DefaultHttpClient httpClient; public static DefaultHttpClient getHttpClient(){ if(httpClient==null){HttpParams params = new BasicHttpParams();
// 增加最大连接到200
ConnManagerParams.setMaxTotalConnections(params, 200); // 连接最大等待时间 ConnManagerParams.setTimeout(params, 60000 * 3);
// 增加每个路由的默认最大连接到20
ConnPerRouteBean connPerRoute = new ConnPerRouteBean(20); // 设置连接超时时间 HttpConnectionParams.setConnectionTimeout(params, 60000 * 2); // 设置读取超时时间 HttpConnectionParams.setSoTimeout(params, 60000 * 3);
// 对localhost:80增加最大连接到50 HttpHost localhost = new HttpHost("locahost", 80); connPerRoute.setMaxForRoute(new HttpRoute(localhost), 100); ConnManagerParams.setMaxConnectionsPerRoute(params, connPerRoute); SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register( new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); schemeRegistry.register( new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry); return new DefaultHttpClient(cm, params); }else{ return httpClient; } }}
这是建立一个工厂类,创建一个支持多线程的HttpClient。
public class HttpConnect {private static HttpClient client = HttpClientFactory.getHttpClient();public static HttpResponse action(String url) { try { return client.execute(new HttpPost(url)); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }}这是外部调用的类,这个HttpConnect是坚持多线程操作 。
另外,最最应该注意的是:请保证你的多线程操作的是同一个HttpClient,不然还是会并发,数据丢失。。
- 多线程下的httpclient
- 多线程模式下使用httpclient
- 创建多线程的HttpClient
- Android:多线程的HttpClient
- 封装多线程的HttpClient
- HttpClient访问的多线程问题
- httpClient 多线程
- httpclient+HTMLParser 的应用(多线程版)
- Android下的HttpClient的使用(9.11)
- HttpClient 多线程处理
- HTTPClient多线程处理
- HttpClient多线程并发问题
- HttpClient 支持多线程
- httpClient多线程请求
- 多线程httpclient冲突
- Android HttpClient多线程
- HttpClient多线程并发问题
- 多线程HttpClient调用
- 如何学习arm linux
- 封装的可运行于winform与web的Log4Net的类库
- 设置JAVA环境变量
- DDM之myql cluster
- 图片在数据库中的操作
- 多线程下的httpclient
- 第三次上机实验报告2
- Qt教程一 —— 第七章:一个事物领导另一个
- C-指针-02
- JNI使用
- javascript 获取XML根节点
- Java方块缩小渐变特效
- 水题
- c# 实现网页上用户自动登陆|asp.net 模拟网站登录