httpclient httpclient连接回收
2024-09-15 15:25:54
httpclient连接释放
httpClient必须releaseConnection,但不是abort。因为releaseconnection是归还连接到到连接池,而abort是直接抛弃这个连接,
而且占用连接池的数目。
HttpGet httpget = new HttpGet(url);
httpGet.releaseConnection();
连接回收策略
经典的IO阻塞模式有一个主要的缺点,就是当IO操作被阻塞的时候,网络socket只对I/O事件影响。
当一个连接释放回管理器,它会保持活跃,然后它不会监听socket的状态和任何IO事件。如果这个连接在服务器端被关闭,客户端的连接在连接状态下不会检测出这个改变。
HttpClient通过测试连接是否为"陈腐的"而尝试去缓解这个问题,"陈腐的"是指不再是有效的,因为它会被服务器端关闭掉。并会在这之前为了正执行中的HTTP请求去使用连接。
"陈腐的"连接检测不是百分之百有效的,并且会给每个请求执行增加10毫秒,为了空闲连接,唯一有效的解决方法是在每个socket模型里不包含一个线程,有一个专门的监听线程是被用来驱逐已经过期不活跃的长连接的。这个监听线程会周期中的调用ClientConnectionManager #closeExpiredConnections()方法去关闭所有已经过期的连接并从连接池里驱逐已经关闭的连接。在超过指定的过期后,也可以随意地调用ClientConnectionManager#closeIdleConnections()方法来关闭所有连接。
public static class IdelConnectionMonitorThread extends Thread{
private final HttpClientConnectionManager connMgr;
private volatile boolean shutdown;
public IdleConnectionMonitorThread(HttpClientManager connMgr){
super();
this.connMgr = connMgr;
}
public void run(){
try{
while(!shutdown){
synchronized(this){
wait(5000);
//Close expired connections
connMgr.closeExpiredConnections();
//Optionally close connections that have bean idle longer than 30 sec
connMgr.closeIdelConnections(30,TimeUnit.SECONDS);
}
}
}catche(Exception e){
//terminate
}
}
public void shutdown(){
shutdown=true;
synchronized(this){
notifyAll();
}
}
}
最新文章
- [LeetCode] Wiggle Sort 摆动排序
- Apriori——python3实现
- ural 1018(树形dp)
- 【转】IOS开发:[1]Xcode5界面入门
- C#调用大漠插件的方法和实例
- A Corrupt Mayor's Performance Art(线段树区间更新+位运算,颜色段种类)
- python2与python3
- nginx做反向负载均衡,后端服务器获取真实客户端ip
- Spring4 AOP详解
- 开始你的第一个npm脚本工具
- VS2017移动开发(C#、VB.NET)——Numeric控件的使用方式
- 发福利了!!超过100本的linux免费书籍
- jQuery AJAX获取JSON数据解析多种方式示例
- Appium+Java(三)搭建环境之踩过的坑
- 整理一下odoo10在windows系统下部署的流程
- 深度学习的batch_size
- openlayers/// Puppeteer.js
- ajax实现模糊查询完成列表信息显示
- 【转】HBase架构解析
- Xcode 提交APP时遇到 “has one iOS Distribution certificate but its private key is not installed”
热门文章
- java web项目启动进入首页的配置方式(包含过滤跳转首页实现)
- java编程内容之开始
- Oncomine: 一个肿瘤相关基因研究的数据库--转载
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) E. Pretty Song 算贡献+前缀和
- Cocos2d-x学习笔记(六)Label字体控制
- 安装cartographer_ros
- Kali Linux下常用软件安装及配置
- C#,ArcGIS Engine开发入门教程
- English trip -- VC(情景课)10 B Around the house 在家里
- LeetCode--035--搜索插入位置