import java.util.concurrent.CountDownLatch; import org.apache.http.HttpResponse; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.HttpGet; import org.apache.http.concurrent.FutureCallback; import org.apache.http.impl.nio.client.CloseableHttpAsyncClient; import org.apache.http.impl.nio.client.HttpAsyncClients; public class AsyncClientHttpExchangeFutureCallback { public static void main(final String[] args) throws Exception { RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(300000) .setConnectTimeout(300000).build(); CloseableHttpAsyncClient httpclient = HttpAsyncClients.custom() .setDefaultRequestConfig(requestConfig).setMaxConnTotal(1000).setMaxConnPerRoute(1000)//此处为多并发设置 .build(); try { httpclient.start(); HttpGet[] requests =new HttpGet[900]; for (int i = 0; i < 900; i++) { requests[i] = new HttpGet("http://192.168.71.192:8100/sub?cname="+i); } final CountDownLatch latch = new CountDownLatch(requests.length+1); for (final HttpGet request: requests) { httpclient.execute(request, new FutureCallback<HttpResponse>() { public void completed(final HttpResponse response) { latch.countDown(); System.out.println(request.getRequestLine() + "->" + response.getStatusLine()); } public void failed(final Exception ex) { latch.countDown(); System.out.println(request.getRequestLine() + "->" + ex); } public void cancelled() { latch.countDown(); System.out.println(request.getRequestLine() + " cancelled"); } }); } latch.await(); System.out.println("Shutting down"); } finally { httpclient.close(); } System.out.println("Done"); } }
相关推荐
1. **非阻塞I/O**:HttpAsyncClient 使用NIO(Non-blocking I/O)模型,允许在单个线程中处理多个并发连接,显著提高了资源利用率和并发能力。 2. **异步API**:提供了一套异步编程接口,允许开发者启动HTTP操作而...
本实例源码包"HttpAsyncClient.zip"就是基于此库的一个示例,帮助开发者深入理解如何在实际项目中应用异步HTTP请求。 1. **Apache HttpClient库**:Apache HttpClient是Apache软件基金会开发的一个开放源代码项目,...
1. **初始化**: 首先,需要创建一个`CloseableHttpAsyncClient`实例,配置好相关参数如连接池大小、超时时间等。 ```java HttpAsyncClientBuilder builder = HttpAsyncClients.custom(); // 添加配置... ...
1. **初始化与配置**:在使用HttpAsyncClient之前,需要先创建一个HttpClientBuilder实例,并对其进行配置,如设置连接池大小、超时时间、重试策略等。然后调用build()方法生成HttpAsyncClient实例。 2. **异步请求...
在使用HttpAsyncClient时,开发者首先需要创建一个`CloseableHttpAsyncClient`实例,并进行初始化。这通常涉及到设置连接池大小、超时时间、重试策略等配置。然后,你可以通过`execute`方法发送一个或多个HTTP请求,...
总的来说,Apache HttpAsyncClient是一个强大的工具,它的异步特性和NIO支持使得它在处理大量并发请求时表现优异。通过深入研究源码,开发者可以更好地掌握其内部机制,从而在实际项目中更高效地利用这个库。
Apache HttpClient项目为开发者提供了一个强大的工具,它的子模块HttpAsyncClient专门用于异步非阻塞的HTTP通信,极大地提高了性能和响应速度。本篇将深入探讨HttpAsyncClient的核心概念、关键API以及实际应用中的...
Message-Driven Bean EJB实例源代码 2个目标文件 摘要:Java源码,初学实例,EJB实例 Message-Driven Bean EJB实例源代码,演示一个接收购物订单的消息驱动Bean,处理这个订单同时通过e-mail的形式 //给客户发一个感谢...
同时,对于长连接的维护,HttpClient支持Keep-Alive特性,可以减少建立新连接的开销。 此外,HttpClient还提供了异步API,适用于非阻塞I/O场景,可以提高系统的并发能力。通过使用HttpAsyncClient,我们可以异步...
HttpClient中的一个核心概念是连接管理。在频繁的HTTP请求中,建立和关闭TCP连接是耗时的,因此HttpClient引入了连接池机制。连接池允许复用已建立的TCP连接,减少了每次请求时的连接创建时间,提高了整体性能。...
1. 创建HttpClient实例:首先需要创建一个HttpClient对象,例如使用`HttpClients.createDefault()`,或者自定义配置。 2. 构建HttpGet或HttpPost对象:根据需求选择HTTP方法,设置URL和其他请求头信息。 3. 执行请求...
这个库的核心特点在于它支持非阻塞I/O,能够处理大量的并发连接,从而极大地提高了应用程序的性能。在Java应用中,特别是在服务器端开发或者需要频繁进行HTTP请求的场景下,Async-http-client是一个非常理想的工具。...
这个“HTTPClient的一个封装”显然指的是对Apache HttpClient库进行了定制化处理,以适应特定项目需求或者简化API使用。下面将详细讨论HttpClient的核心概念、封装的目的以及可能实现的方式。 HttpClient是Apache...
HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...
2. 连接管理:改进了连接池的管理策略,可以更好地控制并发连接数量,避免资源浪费。 3. 错误处理:增强了错误处理机制,提供了更详细的错误信息,便于开发者调试和解决问题。 4. 兼容性:保持了对早期版本API的兼容...
2. **Future**: 发送异步请求后,`HttpAsyncClient`返回一个`Future<HttpResponse>`对象。这个对象可以注册回调函数,当HTTP响应准备好时,回调函数会被调用。也可以使用`Future`的`get()`方法阻塞直到响应到达,但...
使用HttpClient首先需要创建一个`HttpClient`实例。这通常通过`HttpClientBuilder`或者`HttpAsyncClientBuilder`来构建,可以根据需求定制各种配置,如连接池大小、超时时间等。 2. **执行HTTP请求** HttpClient...
`HttpAsyncClient`允许我们以非阻塞方式发送请求,通过监听器或回调函数处理响应,适用于高并发场景。 9. **重试策略**:HttpClient允许自定义重试策略,如在网络不稳定时自动重试请求,避免因短暂的网络问题而失败...
- **异步请求**:使用HttpAsyncClient进行非阻塞I/O,适用于高并发场景。 - **多部分表单提交**:HttpPost配合MultipartEntityBuilder实现文件上传。 - **HTTPS支持**:配置SSLContext和X509TrustManager以处理...
HTTPClient是Apache软件基金会的一个开放源代码项目,它提供了一个用Java实现的HTTP客户端API,使得开发者能够方便地创建能够处理HTTP协议的应用程序。在Java开发中,HTTPClient库经常被用于执行HTTP请求,比如GET、...