`

HTTPClient的多线程编程

    博客分类:
  • JAVA
阅读更多

Axis2的连接主要采用了HttpClient进行与服务器的服务的交互,其中的代码分析看出Httpclient的多线程支持代码的编写,记录下来,便于以后用到使用

    protected HttpClient getHttpClient(MessageContext msgContext) {
        HttpClient httpClient;
        final ConfigurationContext configContext = msgContext.getConfigurationContext();
        synchronized (lock) {
            httpClient = (HttpClient) configContext.getProperty(HTTPConstants.CACHED_HTTP_CLIENT);
            if (httpClient == null) {
                log.trace("Making new ConnectionManager");
                HttpConnectionManager connManager = new MultiThreadedHttpConnectionManager();

                // In case we need to set any params, do it here, but for now use defaults.
//                HttpConnectionManagerParams params = new HttpConnectionManagerParams();
//                params.setMaxConnectionsPerHost(HostConfiguration.ANY_HOST_CONFIGURATION, 200);
//                etc...
//                connManager.setParams(params);

                httpClient = new HttpClient(connManager);
                HttpClientParams clientParams = new HttpClientParams();
                // Set the default timeout in case we have a connection pool starvation to 30sec
                clientParams.setConnectionManagerTimeout(30000);
                httpClient.setParams(clientParams);
                configContext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);
            }

            // Get the timeout values set in the runtime
            initializeTimeouts(msgContext, httpClient);
        }
        return httpClient;
    }

MultiThreadedHttpConnectionManager就是用来解决线程安全性的,HttpClient自动维护他们的关系

其中MultThreadedHttpConnectionManage有如下r参数配置:

connectionStaleCheckingEnabled:这个标志对所有已经创建的connections都适用。除特殊情况外,此值应该设置成true

maxConnectionsPerHost:最大连接数,默认是2

maxTotalConnections:最大活动连接数,默认是20

所以可以根据具体需要调整参数的大小

特别注意

    在使用完成了连接以后一定需要手动关闭连接,由于他自己无法进行自动连接释放,所以需要手动释放连接。

分享到:
评论

相关推荐

    httpclient多线程下载(分段下载)实践

    本篇文章将深入探讨如何使用HTTPClient进行多线程分段下载的实践。 首先,我们要理解多线程下载的基本原理。多线程下载是通过将大文件分割成多个小段,每个线程负责下载一个或多个段,这样可以充分利用多核处理器的...

    使用java的HttpClient实现多线程并发

    通过使用HttpClient的连接池和多线程,我们可以有效地并发执行HTTP GET请求,同时控制并发数量,避免过多的网络连接导致服务器压力过大。这种方式提高了请求效率,减少了资源消耗,并且遵循了最佳实践。

    winform之多线程编程 (源码)

    这就是多线程编程的重要性所在。本篇将深入探讨如何在WinForm应用中运用多线程技术来提升性能和用户体验。 一、WinForm与多线程 1. 背景线程:为了防止UI阻塞,我们可以创建后台线程来处理计算密集型任务。在...

    httpclient工具

    在这种情况下,除了使用多线程提高并发性,还可以考虑使用异步编程模型(如Future或Callback)来提高效率,减少线程等待时间。同时,要合理控制请求频率,避免对服务器造成过大的压力,甚至触发反爬策略。 总的来说...

    c#异步多线程http文件分块断点续传下载工具

    在C#中,我们可以使用`System.Net.WebClient`类或者自定义`HttpClient`实例来实现多线程下载。 异步编程是现代C#的一个重要特性,它允许我们在等待IO操作完成时,不阻塞主线程,提高程序的响应性。在下载工具中,...

    VB.NET 多线程分块下载类.rar

    在VB.NET编程中,多线程技术是一种提升应用程序性能的重要手段。特别是在处理大文件下载时,多线程分块下载可以显著提高效率,减少用户等待时间,并有效利用网络带宽。这个“VB.NET 多线程分块下载类”正是为了解决...

    C#实现多线程下载文件

    C#作为一种强大的编程语言,提供了丰富的多线程支持,使得开发者能够轻松地创建并管理多个执行线程。本文将深入探讨如何在C#中实现多线程下载文件,涉及的知识点包括线程池、异步编程、进度更新以及错误处理。 首先...

    C# Winform 多线程下载

    总的来说,C# Winform多线程下载的实现涉及到多线程编程、Winform UI交互以及HTTP文件下载,这些是开发高效桌面应用程序必备的基础技能。通过这样的实践,开发者能够提升处理并发任务的能力,优化用户体验,尤其是在...

    多线程访问网页测试

    在IT行业中,多线程是一种常见的编程技术,特别是在C#这样的多任务编程环境中。这个名为“多线程访问网页测试”的...通过学习和实践此类项目,开发者可以提升在高并发场景下的编程能力,更好地理解和应用多线程编程。

    C#多线程下载文件源码

    综上所述,C#多线程下载文件涉及到了多线程编程、文件流操作、网络通信、同步控制、错误处理、异步编程等多个方面,是学习C#高级特性和实际应用的好例子。通过对提供的源码进行研究,开发者不仅可以掌握多线程下载的...

    多任务和多线程以及程序设计

    在这个命名空间中,`Thread`类是多线程编程的核心,它提供了创建、控制和管理线程的方法和属性。例如,`Thread.Start()`用于启动一个新线程,`Thread.Sleep()`让当前线程暂停执行一定时间,`Thread.Join()`则等待一...

    c#多线程线程池和异步编程

    在.NET框架中,多线程编程是实现并发执行任务的重要手段。本篇将详细讲解`System.Threading.ThreadPool`类、`System.Threading.Timer`类以及异步编程的使用。 **1. System.Threading.ThreadPool 类** 线程池是一种...

    c# 多线程网页信息抓取

    2. **多线程**:在多线程编程中,多个线程可以在同一时间执行,从而提高程序的并发性和效率。在C#中,可以使用`System.Threading`命名空间中的`Thread`类创建和管理线程。另外,`Task`类和`Parallel`类提供了更高...

    多线程从远程服务器上下载文件

    在IT行业中,多线程技术是一项关键的编程概念,...而实现这一功能需要对多线程编程、网络协议和文件操作有深入的理解。在实践中,还需要关注性能优化、错误处理和用户体验等方面,以确保下载和上传过程的稳定性和效率。

    基于HTTP多线程下载工具源码

    【标题】"基于HTTP多线程下载工具源码"揭示了这个项目的核心是实现一个能够利用HTTP协议并采用多...通过研究这个项目,开发者不仅可以提升网络编程技能,还能掌握多线程编程的实战技巧,对提升个人技术能力非常有益。

    c#写的多线程Http下载,经测试下载速度还可以

    而`Task`和`Parallel`类是.NET Framework 4.0引入的并行编程模型,它们提供了更高级的抽象,简化了多线程编程。在这个Http下载项目中,多线程可能被用来同时从服务器获取数据,以提高下载速度。 其次,Http下载涉及...

    C# Winform 实现Http多线程下载

    总之,C# Winform实现Http多线程下载涉及到了Http协议、多线程编程以及文件操作等多个知识点。理解和掌握这些技术对于开发高效、可靠的下载工具至关重要。在实践中,还应注意优化并发数量、考虑网络状况等因素,以...

    C#多线程下载demo

    在C#编程中,多线程技术是一种关键的性能优化手段,特别是在处理耗时操作如大文件下载时。本示例“C#多线程下载demo”旨在展示如何利用多线程来加速文件的下载过程。多线程允许程序同时执行多个任务,从而提高效率并...

    c# 多线程文件下载程序

    在C#编程中,多线程文件下载是一种提高下载效率的...以上就是关于“C#多线程文件下载程序”的核心知识点和实现细节,这个程序的实现涉及到C#语言基础、.NET框架、多线程编程、网络编程以及文件操作等多个方面的知识。

    HttpClient 3.x to HttpComponents HttpClient 4.x

    在快速迁移指南中,提到了一些关键步骤和概念,例如使用多线程连接管理器`MultiThreadedHttpConnectionManager`,它是HttpClient 3.x中用来处理连接管理的一个重要组件。而在4.x版本中,这个管理器被`...

Global site tag (gtag.js) - Google Analytics