HttpAsyncClient 的简单使用
下载地址:http://hc.apache.org/downloads.cgi
在NetBeans中导入以下jar文件:
1:一次请求:
public static void oneReuest(){
final CloseableHttpAsyncClient httpClient = HttpAsyncClients.createDefault();
httpClient.start();
final HttpGet request = new HttpGet("http://www.apache.org/");
final Future future = httpClient.execute(request, null);
try {
HttpResponse response = (HttpResponse) future.get();
System.out.println("Response:" + response.getStatusLine());
System.out.println("Shutting down");
} catch (Exception ex) {
Logger.getLogger(Httpasyncclient.class.getName()).log(Level.SEVERE, null, ex);
}finally{
try {
httpClient.close();
} catch (IOException ex) {
Logger.getLogger(Httpasyncclient.class.getName()).log(Level.SEVERE, null, ex);
}
} System.out.println("执行完毕");
}
2:多次异步请求:
public static void moreRequest(){
final RequestConfig requestConfitg = RequestConfig.custom()
.setSocketTimeout(3000)
.setConnectTimeout(3000).build(); final CloseableHttpAsyncClient httpClient = HttpAsyncClients.custom()
.setDefaultRequestConfig(requestConfitg)
.build(); httpClient.start(); final HttpGet[] requests = new HttpGet[]{
new HttpGet("http://www.apache.org/"),
new HttpGet("http://www.baidu.com/"),
new HttpGet("http://www.oschina.net/")
}; final CountDownLatch latch = new CountDownLatch(requests.length);
for(final HttpGet request: requests){ httpClient.execute(request, new FutureCallback(){
@Override
public void completed(Object obj) {
final HttpResponse response = (HttpResponse)obj;
latch.countDown();
System.out.println(request.getRequestLine() + "->" + response.getStatusLine());
} @Override
public void failed(Exception excptn) {
latch.countDown();
System.out.println(request.getRequestLine() + "->" + excptn);
} @Override
public void cancelled() {
latch.countDown();
System.out.println(request.getRequestLine() + "cancelled");
}
});
} try {
latch.await();
System.out.println("Shutting Down");
} catch (InterruptedException ex) {
Logger.getLogger(Httpasyncclient.class.getName()).log(Level.SEVERE, null, ex);
}finally{
try {
httpClient.close();
} catch (IOException ex) {
Logger.getLogger(Httpasyncclient.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.out.println("Finish!");
}
运行结果:
run:
GET http://www.baidu.com/ HTTP/1.1->HTTP/1.1 OK
GET http://www.oschina.net/ HTTP/1.1->HTTP/1.1 OK
GET http://www.apache.org/ HTTP/1.1->HTTP/1.1 OK
Shutting Down
Finish!
成功构建 (总时间: 秒) 可以看出是异步执行的!不是按照我们传入的URL参数顺序执行的!
HttpAsyncClient 的简单使用的更多相关文章
- 异步httpclient(httpasyncclient)的使用与总结
参考:异步httpclient(httpasyncclient)的使用与总结 1. 前言应用层的网络模型有同步与异步.同步意味当前线程是阻塞的,只有本次请求完成后才能进行下一次请求;异步意味着所有的请 ...
- 用IntelliJ IDEA创建Gradle项目简单入门
Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...
- 使用异步HTTP提升客户端性能(HttpAsyncClient)
使用异步HTTP提升客户端性能(HttpAsyncClient) 大家都知道,应用层的网络模型有同步.异步之分. 同步,意为着线程阻塞,只有等本次请求全部都完成了,才能进行下一次请求. 异步,好处是不 ...
- Gradle项目学习 & HttpAsyncClient学习 & CountDownLatch学习
装了Intellij,就是装了Gradle. 新建一个Gradle项目.然后下面这个页面要勾选上面两项: Use auto-import和Create directories for empty co ...
- 【造轮子】打造一个简单的万能Excel读写工具
大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...
- Fabio 安装和简单使用
Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 哪种缓存效果高?开源一个简单的缓存组件j2cache
背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...
- 在Openfire上弄一个简单的推送系统
推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...
随机推荐
- 借助Net-Speeder对服务器进行优化
对于丢包情况较为严重的VPS,我们可以采用一些优化TCP协议的软件对服务器进行相应的优化操作,我在以前的文章中介绍过一款名叫锐速的软件,它可以很好的解决丢包问题,但是这个软件对于服务器内核 ...
- <PHP>字符串处理代码
字符串处理: strlen("aaa");取字符串的长度 *** strcmp("aaa","aaa");比较两个字符串 ...
- log4j 突然不打印记录,提示:No appenders could be found for logge,处理方法
log4j 一直都在使用正常,log4j.xml配置.代码都没有修改,突然不打印记录,出现下面提示: log4j:WARN No appenders could be found for logger ...
- 使用AWS的EC2服务器,进行跳墙
选Ubuntu的服务器 一开始先设置Root,命令:su root 在安装之前,先Update一下源:apt-get update update完就可以安装: 1.安装pi,命令:apt-get in ...
- 一个提供jsp免费空间的站点
EATJ美国JSP虚拟主机商提供免费jsp空间申请,50M空间,每月3G的流量限制,支持Java5.0/6.0.PHP.CGI.Perl.SSI等,提供2个MySQL数据库,Tomcat v5.5/v ...
- Swift 2.0初探:值得注意的新特性
转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...
- CPU使用率和Load Average的关系
看了几篇博客总结的区别,自己终于明白了含义,在这里将理解总结一下: 对于定义和解释,感觉淘测试上的更容易理解: 引用如下: CPU使用率: 一段时间内CPU的使用状况,从这个指标可以看出某一段时间内 ...
- WebApi2官网学习记录---Configuring
Configuration Settings WebAPI中的configuration settings定义在HttpConfiguration中.有一下成员: DependencyResolver ...
- c#类初始化器
其实类型初始化器只是一种语法糖这样写MyClass a=new MyClass{ filedOne="a" ,filedTwo="b" };会被编译器编译成和如 ...
- java HashMap的原理
HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外.HashMap实际 ...