博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《HttpClient官方文档》2.5 连接驱逐策略
阅读量:6372 次
发布时间:2019-06-23

本文共 1449 字,大约阅读时间需要 4 分钟。

2.5. 连接驱逐策略

经典阻塞I / O模型的主要缺点之一是网络套接字只有在I / O操作阻塞时才能对I / O事件作出反应。当连接释放回管理器时,它可以保持活动,但是它无法监视套接字的状态,并对任何I / O事件做出反应。如果服务器端关闭连接,客户端这边的连接将无法察觉连接状态的变化(并且在通过在末端关闭套接字来做出适当地对应)。

HttpClient通过测试连接是否为“stale”,希望能够缓解使用连接来执行HTTP请求之前,由于服务器端关闭了这个连接使得它不再有效的问题。对连接是否过时的检查不是 100%可靠的。用于闲置连接的不涉及每套接字一线程模型的唯一可行解决方案是用监视器线程来收回由于长时间不活动而被认为过期的连接。监视器线程可以定期调用ClientConnectionManager#closeExpiredConnections()方法关闭所有过期的连接并从连接池中驱逐已关闭的连接。它还可以调用ClientConnectionManager#closeIdleConnections()这个方法来关闭在给定时间段内所有闲置连接。

public static class IdleConnectionMonitorThread extends Thread {        private final HttpClientConnectionManager connMgr;    private volatile boolean shutdown;        public IdleConnectionMonitorThread(HttpClientConnectionManager connMgr) {        super();        this.connMgr = connMgr;    }    @Override    public void run() {        try {            while (!shutdown) {                synchronized (this) {                    wait(5000);                    // Close expired connections                    connMgr.closeExpiredConnections();                    // Optionally, close connections                    // that have been idle longer than 30 sec                    connMgr.closeIdleConnections(30, TimeUnit.SECONDS);                }            }        } catch (InterruptedException ex) {            // terminate        }    }        public void shutdown() {        shutdown = true;        synchronized (this) {            notifyAll();        }    }    }

 转载自 

你可能感兴趣的文章
Java中HashMap,LinkedHashMap,TreeMap的区别
查看>>
iPhone消息推送机制实现与探讨(转)
查看>>
iphone 线程 NSCondition NSThread
查看>>
Debian8添加kali源并安装metasploit
查看>>
Linux redhat 5.7 安装 Teamviewer7
查看>>
android EditText inputType说明
查看>>
交叉熵代价函数(作用及公式推导)
查看>>
这个用markdown编写
查看>>
display、 float 、position
查看>>
centos7.4 安装LAMP环境
查看>>
poj 1821 Fence(单调队列)
查看>>
关于Map集合的遍历总结
查看>>
Python下调用json.dumps中文显示问题解决办法
查看>>
【计数】【UVA11401】 Triangle Counting
查看>>
Django建站纪要(一)——做个blog
查看>>
(实现)vue.js最简实现
查看>>
RabbitMQ发送消息成功,但是接受不到消息
查看>>
nova-network创建初始化网络
查看>>
虎符遥控器(PPT遥控翻页)
查看>>
Java常用缩略词
查看>>