zoukankan      html  css  js  c++  java
  • HttpClient的连接管理器相关

     注意

    public class ClientEvictExpiredConnections {
    
        public static void main(String[] args) throws Exception {
            PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
            // 设置最大连接数
            cm.setMaxTotal(200);
            // 设置每个主机地址的并发数
            cm.setDefaultMaxPerRoute(20);
    
            new IdleConnectionEvictor(cm).start();
        }
    
        public static class IdleConnectionEvictor extends Thread {
    
            private final HttpClientConnectionManager connMgr;
    
            private volatile boolean shutdown;
    
            public IdleConnectionEvictor(HttpClientConnectionManager connMgr) {
                this.connMgr = connMgr;
            }
    
            @Override
            public void run() {
                try {
                    while (!shutdown) {
                        synchronized (this) {
                            wait(5000);
                            // 关闭失效的连接
                            connMgr.closeExpiredConnections();
                        }
                    }
                } catch (InterruptedException ex) {
                    // 结束
                }
            }
    
            public void shutdown() {
                shutdown = true;
                synchronized (this) {
                    notifyAll();
                }
            }
        }
    
    }

     定期关闭无效连接

    public class ClientEvictExpiredConnections {
    
        public static void main(String[] args) throws Exception {
            PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
            // 设置最大连接数
            cm.setMaxTotal(200);
            // 设置每个主机地址的并发数
            cm.setDefaultMaxPerRoute(20);
    
            new IdleConnectionEvictor(cm).start();
        }
    
        public static class IdleConnectionEvictor extends Thread {
    
            private final HttpClientConnectionManager connMgr;
    
            private volatile boolean shutdown;
    
            public IdleConnectionEvictor(HttpClientConnectionManager connMgr) {
                this.connMgr = connMgr;
            }
    
            @Override
            public void run() {
                try {
                    while (!shutdown) {
                        synchronized (this) {
                            wait(5000);
                            // 关闭失效的连接
                            connMgr.closeExpiredConnections();
                        }
                    }
                } catch (InterruptedException ex) {
                    // 结束
                }
            }
    
            public void shutdown() {
                shutdown = true;
                synchronized (this) {
                    notifyAll();
                }
            }
        }
    
    }

    设置请求参数

    public class ClientEvictExpiredConnections {

     

        public static void main(String[] args) throws Exception {

            PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();

            // 设置最大连接数

            cm.setMaxTotal(200);

            // 设置每个主机地址的并发数

            cm.setDefaultMaxPerRoute(20);

     

            new IdleConnectionEvictor(cm).start();

        }

     

        public static class IdleConnectionEvictor extends Thread {

     

            private final HttpClientConnectionManager connMgr;

     

            private volatile boolean shutdown;

     

            public IdleConnectionEvictor(HttpClientConnectionManager connMgr) {

                this.connMgr = connMgr;

            }

     

            @Override

            public void run() {

                try {

                    while (!shutdown) {

                        synchronized (this) {

                            wait(5000);

                            // 关闭失效的连接

                            connMgr.closeExpiredConnections();

                        }

                    }

                } catch (InterruptedException ex) {

                    // 结束

                }

            }

     

            public void shutdown() {

                shutdown = true;

                synchronized (this) {

                    notifyAll();

                }

            }

        }

     

    }

  • 相关阅读:
    ovs流表机制(四)用vxlan实现多个节点的vm通信(二)
    expect
    在Scrapy中使用Selenium
    Python网络编程
    Scrapy持久化存储
    Scrapy基础
    Selenium实例
    XML和XPATH
    猫眼电影爬取
    Request模块
  • 原文地址:https://www.cnblogs.com/sh-0131/p/11743028.html
Copyright © 2011-2022 走看看