使用多线程的主要目的,是为了实现并行的下载。在httpclient运行的过程中,每个http协议的方法,使用一个HttpConnection实 例。由于连接是一种有限的资源,每个连接在某一时刻只能供一个线程和方法使用,所以需要确保在需要时正确地分配连接。HttpClient采用了一种类似 jdbc连接池的方法来管理连接,这个管理工作由 MultiThreadedHttpConnectionManager完成。
MultiThreadedHttpConnectionManager connectionManager =
new MultiThreadedHttpConnectionManager();
HttpClient client = new HttpClient(connectionManager);
此 是,client可以在多个线程中被用来执行多个方法。每次调用HttpClient.executeMethod() 方法,都会去链接管理器申请一个连接实例,申请成功这个链接实例被签出(checkout),随之在链接使用完后必须归还管理器。管理器支持两个设置: maxConnectionsPerHost 每个主机的最大并行链接数,默认为2
maxTotalConnections 客户端总并行链接最大数,默认为20

  管理器重新利用链接时,采取早归还者先重用的方式(least recently used approach)。
  由于是使用HttpClient的程序而不是HttpClient本身来读取应答包的主体,所以HttpClient无法决定什么时间连接不再使用了,这也就要求在读完应答包的主体后必须手工显式地调用releaseConnection()来释放申请的链接。
MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
HttpClient client = new HttpClient(connectionManager);
...
// 在某个线程中。
GetMethod get = new GetMethod("http://jakarta.apache.org/");
try {
client.executeMethod(get);
// print response to stdout
System.out.println(get.getResponseBodyAsStream());
} finally {
// be sure the connection is released back to the connection
// manager
get.releaseConnection();
}
对每一个HttpClient.executeMethod须有一个method.releaseConnection()与之匹配.

httpclient3.1的多线程处理相关推荐

  1. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  2. java多线程封装_Java 多线程处理任务的封装

    最近项目很多地方使用多线程处理一些任务,逻辑代码和java多线程处理代码混合在一起,造成代码的可读性超级差,现在把Java多线程相关的处理抽出来,方面代码中重复使用.抽的不好,欢迎大家拍砖 使用方法很 ...

  3. java list 替换 多线程_Java多线程处理List数据

    import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.ArrayUtils; public ...

  4. 多进程多线程处理文本数据

    运行环境 python 3.6 numpy 1.18 threadpool 1.3 内置库:multiprocessing 代码简介 实现一个通用多进程+多线程支持方法.可以动态支持其他functio ...

  5. python多线程处理数据库_在flask框架下利用Python的threading或thread多线程库如何操作数据库?...

    萌新在写网站的发送邮件验证,为了防止用户滥发,所以加了权限.前端简单地disable按钮一刷新就没了,纯粹视觉提示作用,所以在后端models里为user加了一个resend_right,当为True ...

  6. Python: Socket网络编程,多线程处理小Demo

    一个简单的例子,深入研究一下socket的多线程处理任务 Server端: #!/usr/bin/env python #encoding:utf8 # # 注意:定义encoding时必须在第二行i ...

  7. socket网络编程——多进程、多线程处理并发

    1.服务器处理并发的必要性 如下图所示, 当一个客户端与服务器建立连接以后,服务器端 accept()返回,进而准备循环接收客户端发过来的数据.如果客户端暂时没发数据,服务端会在 recv()处阻塞. ...

  8. 按钮开始多线程_微软MR技术专家分享:AR/VR多线程处理的八年经验与技巧

    查看引用/信息源请点击:映维网 关于多线程的经验分享 (映维网 2020年11月17日)多线程(Multithreading)是指从软件或者硬件实现多个线程并发执行的技术.具有多线程能力的计算机因有硬 ...

  9. 【Opencv-Tools(一)】OpenCV中使用多线程处理图像

    OpenCV中使用多线程处理图像 引用:https://gist.github.com/yinguobing/7d1318e31f6e3455f30527a39361512a #!/usr/bin/e ...

最新文章

  1. 全国大学生智能汽车竞赛获奖证书文字
  2. SQL Server中的Merge关键字
  3. 自学python后能干什么-学Python后能干什么 郑州Python就业怎么样
  4. python刷取CSDN博文访问量之一
  5. c++获取数组长度_灵魂拷问:Java如何获取数组和字符串的长度?length还是length()?...
  6. Oracle死锁情况
  7. docker 拷贝镜像文件
  8. 一道错误答案传遍全网的逻辑面试题
  9. 不购买2021新款MacBook Pro的理由
  10. 图像语义分割(14)-FastFCN: 重新思考语义分割模型主干网络中的扩张卷积
  11. 基于JAVA大数据在线考试系统在线阅卷系统及大数据统计分析计算机毕业设计源码+数据库+lw文档+系统+部署
  12. 全国道路运输管理人员考试多选练习题库
  13. mysql 多条件求和_多条件求和的8种方法【Excel分享】
  14. Unity3D AssetBundle打包与加载
  15. 计算机主板品牌排行榜,电脑主板十大品牌排行榜
  16. [JS jQuery项目]仿网易云音乐项目问题摘要
  17. 快递管理系统项目整理
  18. JAVA 安装与简单使用
  19. python爬虫实战之爬取51job前程无忧简历
  20. 注册表删除卸载列表中的软件

热门文章

  1. python软件怎么用-如何使用Python自动控制windows桌面
  2. python可以干什么工作-python到底能做什么
  3. 用python画爱心的代码-Python一行代码画个爱心案例
  4. python入门代码示例-Python入门100个实例(14)——换行符和制表符
  5. python语言必背代码-Python新手必须知道的25条知识点
  6. python 编程入门-python编程入门(第3版)
  7. python可以做什么工作好-Python入门后,想要从事自由职业可以做哪方面工作?
  8. @Component注解解析
  9. rocketmq中的broker设计与实现
  10. UVa10795 - A Different Task