JAVA发送HTTP同步请求和异步请求

同步请求:每一次执行httpClient.execute方法时都是阻塞的,必须等待到响应才能继续往下走。

CloseableHttpClient httpClient = HttpClients.createDefault();long startTime = System.currentTimeMillis();for (int i = 0; i < 100; i++) {HttpGet httpGet = new HttpGet("https://www.baidu.com");try (CloseableHttpResponse response = httpClient.execute(httpGet)) {int code = response.getStatusLine().getStatusCode();if (code == HttpStatus.SC_OK) {HttpEntity entity = response.getEntity();String result = EntityUtils.toString(entity);//获得结果System.out.println("第" + i + "次请求完成");}}}

异步请求:httpClient.execute不阻塞,而是立即返回,执行结果由FutureCallback回调处理,而这个回调在另一个线程中。

发送http请求的这2中模式都有应用场景。在请求量少的场景下,异步并不能体现优势,反而会使代码过于复杂难以维护。 在请求并发量巨大的场景下,异步是不二的选择,比如开发压测工具,同步模式肯定无法胜任,开再多的线程也不行,请求根本发不出去,因为线程都被等待响应的过程占用了,机器性能发挥不出来。

CloseableHttpAsyncClient httpClient = HttpAsyncClients.createDefault();httpClient.start();for (int i = 0; i < 100; i++) {HttpGet httpGet = new HttpGet("https://www.baidu.com");httpClient.execute(httpGet, new FutureCallback<HttpResponse>() {@Overridepublic void completed(HttpResponse response) {if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {HttpEntity entity = response.getEntity();try {String result = EntityUtils.toString(entity);//获得结果} catch (IOException e) {e.printStackTrace();}}}@Overridepublic void failed(Exception e) {}@Overridepublic void cancelled() {}});}

原文地址:https://zhuanlan.zhihu.com/p/373732960?ivk_sa=1024609v

JAVA发送HTTP同步请求和异步请求相关推荐

  1. java同步异步区别_同步请求和异步请求的区别

    同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的 ...

  2. 同步请求和异步请求的区别

    同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式.   异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据 ...

  3. Ajax——同步请求与异步请求

    Ajax--同步请求与异步请求 浏览器和服务器之间数据传输方式 同步方式 异步方式 两种方式有什么不同? 同步请求,服务器响应时,页面整体刷新 异步请求,服务器响应时,页面局部刷新 异步请求有什么优点 ...

  4. ajax同步请求和异步请求

    ajax同步请求和异步请求 前序 什么是同步请求? 什么是异步请求? 比较同步和异步请求 前序 最近好长时间没写博客了,主要由于前一段时间出差,没啥心思写,今天开始重新继续.进入主题,ajax的同步请 ...

  5. 第106天:Ajax中同步请求和异步请求

    同步请求和异步请求的区别 1.同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的.信息错误又要重新 ...

  6. Servlet学习DAY_02:重定向/ 文件上传/ Cookie和Session/ 导入一个工程 / 配置欢迎页面 / 同步请求和异步请求/JSON和AJax介绍 /过滤器

    重定向 重定向是服务器告诉客户端往指定的路径再次发出请求的指令 执行过程: 当服务器执行重定向方法时会给客户端返回302状态码和一个请求路径,浏览器接收到302后会立即往指定的路径再次发出请求 res ...

  7. 【Objective-C】Http常用API、同步请求与异步请求[转]

    比较实用, 转载保存 开发iOS应用要调用Http接口.获取Http资源,有一套比较成熟的框架ASIHTTPRequest.而我还是比较喜欢使用原始一点的API,而它跟其他的面向对象语言有许多共通之处 ...

  8. 什么是同步请求和异步请求?

    一.同步.异步请求 浏览器发送请求给服务器,其有同步请求和异步请求两种方式. 1同步请求 什么叫同步请求呢? 就是在发送一个请求之后,需要等待服务器响应返回,才能够发送下一个请求. 之前学的请求是通过 ...

  9. IOS 同步请求和异步请求 ios开发教程

    2019独角兽企业重金招聘Python工程师标准>>> 下课了,坐下来静静的总结一下今天学的内容 首先是 同步请求和异步请求 同步请求, 使用主线程一次性获得所有请求数据,这就导致一 ...

最新文章

  1. 华硕路由器安装aria2_网易UU加速器联动华硕,瞄准主机玩家联网刚需
  2. jzoj3379-查询【主席树】
  3. 微信小程序开发——点击按钮退出小程序的实现
  4. html怎么移动到vue,vue自定义指令之拖动页面的元素
  5. dart map 转list_Dart 集合类型List Set Map循环forEach map where any every
  6. 鸿蒙电脑系统什么时候普及,鸿蒙操作系统开源是什么意思?华为鸿蒙系统什么时候能用...
  7. 10.深入浅出:反馈的概念及判断——参考《模拟电子技术基础》清华大学华成英主讲
  8. Win10蓝牙耳机连接成功但耳机没声音解决方案
  9. ACM-ICPC 2016 沈阳赛区现场赛 I. The Elder HDU 5956(斜率DP)
  10. 拼多多分享好友砍价Java实现_拼多多砍价怎么发到qq?怎么帮好友砍价?
  11. SolidWorks如何编辑今日制造插件生成的齿轮
  12. Flask框架(一)flak视图和URL
  13. 楠橘星后台管理系统 (第二版)
  14. 柯桥韩国人到底一周平均要吃几次泡面?
  15. 绝对正确!解释“超键、候选键和主键”之间的关系
  16. 《ISLR》学习笔记 —— Bagging、随机森林、Boosting
  17. 自学java多久可以工作_自学java,学多久可以自己找到工作?
  18. 找一个程序员男/女朋友 程序员怎么可能没对象
  19. python 教程之如何使用python中的四分位距统计数据查找数据中的异常值
  20. 伺服电机原点位置在运行一段时间后发生偏移

热门文章

  1. javaScript身份证号码校验工具类IdCardUtils
  2. 微信功能版(可用于电脑、安卓手机端)微信电脑版 使用说明
  3. CD4046应用之倍频
  4. 国际展会常见专业术语翻译
  5. mysql thd_MySQL 5.7: 数据库THD连接管理重构
  6. NUXT.js 前端SSR框架使用
  7. 2022,软件测试出路在哪里?
  8. 红帽系统实现基础网站框架搭建
  9. python下列说法正确的是-以下关于 Python版本的说法中,哪个是正确的?
  10. Python程序员:8个接私活的网站,只要你有码,那“我”就有钱