- 浏览: 34070 次
- 性别:
- 来自: 湖南
文章分类
最新评论
package cn.lake.util; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpVersion; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.params.ConnManagerParams; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpParams; import org.apache.http.params.HttpProtocolParams; import org.apache.http.protocol.HttpContext; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.util.EntityUtils; /** * An example that performs GETs from multiple threads. * * @author Michael Becke */ public class ClientMultiThreadedExecution { public static void main(String[] args) throws Exception { // Create and initialize HTTP parameters HttpParams params = new BasicHttpParams(); ConnManagerParams.setMaxTotalConnections(params, 100); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); // Create and initialize scheme registry SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); // Create an HttpClient with the ThreadSafeClientConnManager. // This connection manager must be used if more than one thread will // be using the HttpClient. ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry); HttpClient httpClient = new DefaultHttpClient(cm, params); // create an array of URIs to perform GETs on String[] urisToGet = { "http://jakarta.apache.org/", "http://jakarta.apache.org/commons/", "http://jakarta.apache.org/commons/httpclient/", "http://svn.apache.org/viewvc/jakarta/httpcomponents/" }; // create a thread for each URI GetThread[] threads = new GetThread[urisToGet.length]; for (int i = 0; i < threads.length; i++) { HttpGet httpget = new HttpGet(urisToGet[i]); threads[i] = new GetThread(httpClient, httpget, i + 1); } // start the threads for (int j = 0; j < threads.length; j++) { threads[j].start(); } } /** * A thread that performs a GET. */ static class GetThread extends Thread { private final HttpClient httpClient; private final HttpContext context; private final HttpGet httpget; private final int id; public GetThread(HttpClient httpClient, HttpGet httpget, int id) { this.httpClient = httpClient; this.context = new BasicHttpContext(); this.httpget = httpget; this.id = id; } /** * Executes the GetMethod and prints some status information. */ @Override public void run() { System.out.println(id + " - about to get something from " + httpget.getURI()); try { // execute the method HttpResponse response = httpClient.execute(httpget, context); System.out.println(id + " - get executed"); // get the response body as an array of bytes HttpEntity entity = response.getEntity(); if (entity != null) { byte[] bytes = EntityUtils.toByteArray(entity); System.out.println(id + " - " + bytes.length + " bytes read"); } } catch (Exception e) { httpget.abort(); System.out.println(id + " - error: " + e); } } } }
有技术兴趣的 请加28830308群.
发表评论
-
HttpClient容易忽视的细节——连接关闭
2012-03-02 09:15 620HttpClient client = new HttpCli ... -
HTTPClient的多线程编程
2012-03-02 09:09 1485Axis2的连接主要采用了HttpClient进行与服务器的服 ... -
HttpClient超时区别
2012-03-02 09:07 1075HttpClient 4 设置超时 httpclient 超时 ... -
HttpClient Theading
2012-03-01 10:49 677有技术兴趣的 请加28830308群. 这篇文章概括了怎样在 ... -
HttpClient使用
2012-03-01 10:43 725有技术兴趣的 请加28830308群. HttpClien ... -
httpclient 4 下载 文件
2012-03-01 10:38 957import java.io.File; import ja ... -
使用了httpclient实现的上传商品的demo
2012-03-01 10:36 1157package com.taobao.top.sample.u ... -
socket简介
2012-02-07 10:58 686第一步 充分理解Socket ... -
转载socket
2012-02-07 10:57 575对TCP/IP、UDP、Socket编程这些词你不会很陌生吧? ... -
Java的synchronized关键字:同步机制总结
2012-02-07 10:54 577不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对 ... -
JAVA RMI
2012-02-07 10:53 577Java RMI 指的是远程方法调用 (Remote Meth ... -
JXL生成复杂的EXCEL
2011-12-26 13:52 1385public String ExcelTaskRepo ... -
如何快速的为现有数据库建立数据字典?
2011-12-20 13:55 998大部分项目在验收时都需要向客户提供一份详细的数据字典,而编写数 ... -
在java中获取客户端真实的IP地址
2011-12-20 13:55 555public static String getRemoteA ... -
用JavaMail的API发送邮件
2011-12-20 13:55 5331、MimeMessage的包装类 public c ... -
在项目中整合FreeMarker框架
2011-12-16 15:40 583FreeMarker是一个用Java编写的模板引擎,既可以 ... -
Commons FTP范例
2011-12-16 15:33 505public class FtpUtil { privat ... -
Java实现的图片生成器
2011-12-16 15:32 522一、本图片生成器具有以下功能特性: 1、可以设置图 ... -
jacob学习总结
2011-12-16 15:27 447JACOB 就是 JAVA-COM Bridge的缩写,提供自 ... -
长短信发送范例
2011-12-16 15:25 692一、关键代码: private synchronized v ...
相关推荐
在IT领域,尤其是在地理信息系统(GIS)开发中,"基于多线程和gdal类库的影像读写"是一个关键的技术点。GDAL(Geospatial Data Abstraction Library)是一个强大的开源库,用于处理多种遥感和地图数据格式,包括TIFF...
Java多线程程经典案例.doc
每个线程可以独立处理文件的一个分段,这样就可以并发地执行读写操作,大大提高处理速度。创建线程的基本步骤包括定义线程类,重写`run()`方法,然后实例化线程并调用`start()`方法。 接下来,我们详细讨论如何实现...
很小的程序,运行程序时开子线程运算Fibonacci序列,父线程输出
BeginInvoke方法启动一个异步操作,它不会等待操作完成就立即返回,而是立即返回一个IAsyncResult对象,可以用于后续跟踪操作状态。EndInvoke方法则用于在操作完成后获取结果或异常。例如: ```csharp public ...
第二套:c语言Socket编程C语言SOCKET编程指南.c语言多进程多线程程.pdf,Linux Socket rogramming by Example.pdf,Linux 多线程等10多个资料....
5. **多线程**:如果系统需要同时处理多个任务,如并发的选课请求,可能需要利用C++的多线程支持,如std::thread库。 6. **文件I/O操作**:用于保存和加载配置文件或日志,可能需要使用C++的文件流(fstream)进行...
【标题】: "本程程源码" 指的是一种编程项目,通常是指一个包含所有源代码的软件开发工程。在IT行业中,源码是程序员编写的应用程序或系统的基础,它是由人类可读的编程语言编写的。通过源码,开发者可以直接理解并...
进程是一个具有独立功能的程序,关于某个特定数据集合进行的一次运行活动。 进程是系统进行资源分配和调度运行的基本单位(程序 + 数据 + 进程控制块PCB),进程会独占CPU。 线程是进程基础上的进一步划分,可...
电梯模拟程序是一个经典的计算机科学问题,常常用于教授和实践面向对象编程的概念。在这个项目中,我们将探讨如何使用C++设计一个高效、灵活的电梯模拟系统。C++是一种强大的编程语言,支持面向对象编程,能够帮助...
在Java编程语言中,"java袁程程"可能是一个课程或者个人学习计划的名称,重点关注的是多态性(Polymorphism)和封装(Encapsulation),这两个是面向对象编程(Object-Oriented Programming, OOP)的基石。...
Scala并发编程是高级函数式编程语言Scala中的一个重要领域,它涉及到如何在多核心处理器系统上高效、安全地执行任务。Scala提供了丰富的并发工具和模型,使得开发者能够在编写高性能、可扩展的应用程序时,同时保持...
(1)利用python多进程程或多线程实时读取远程IP摄像头视频 (2)Pyhon cv2.VideoWriter 保存视频 整合成如下代码,可以对多路网络摄像头图像实时采集并分别保存视频。或者自己改写代码,直接保存每路的实时图像也...
程程电子单片机CCDZ-C原理图展示了一个典型的基于89C52微控制器的电子系统设计。该系统不仅具备基本的控制功能,还集成了多种外围设备,如数码管显示、数模转换、模数转换等功能,适用于各种实际应用场合。通过对该...
1. **动态显示缓冲区状态**:每当一个生产者或者消费者完成对缓冲区的操作时,程序应即时显示缓冲区的所有内容、当前指针的位置以及执行操作的进程标识符。 2. **多生产者与多消费者**:系统中至少包含两个以上的...
`Process32First`用于获取快照中的第一个进程信息,然后`Process32Next`可以获取下一个进程的信息,直到遍历完所有进程。 3. **CloseHandle**:当不再需要进程快照时,我们需要调用`CloseHandle`来释放资源。这个...
多进程程实现生产者消费者模型:信号量(Semaphore)、条件(Condition)、队列(Queue)、事件(Event)、管道(Pipe) ,并辅之(共享内存、Manager) 不同计算机之间实现生产者消费者模型:socket、远程调用(RPC...
在多任务操作系统中,进程调度是决定哪个进程应该获取CPU执行权的关键机制。它主要分为三种类型:抢占式调度、非抢占式调度和混合式调度。在抢占式调度中,高优先级的进程可以中断当前正在执行的进程;非抢占式调度...
"学生竞赛评价系统"是一个基于C语言开发的项目,旨在为教育机构或竞赛组织者提供一个平台,用于管理和评估学生的比赛表现。这个项目可能是大学C语言课程的一个实践环节,旨在帮助学生将课堂所学理论知识转化为实际...
杯口基础模板程程施工设计方案.pdf