同步跟异步,阻塞与非阻塞,这两组概念出现在IO操作中常常让人混淆不清,这里是根据自己想到的,看到的,学到的,整理了自己的理解。

这四个概念两两组合,会形成四个新的概念,如下:

1、同步阻塞 :客户端发送请求到服务端,此时服务端处理任务时间很长,则客户端被服务端堵塞了,所以客户端会一直等待服务端的相应,此时客户端不能做任何事情,服务端也无法接收到任何客户端的请求,这种通信机制简单粗暴,但是效率不高。

2、同步非阻塞:客户端发送请求到服务端,此时服务端处理时间很长,这个时候虽然客户端会一直等待相应,但是服务端可以处理其他请求,过一会回来处理原先的,这种方式很高效,一个服务端可以处理多个请求,不会因为任务没处理完而一直等待,所以这是非堵塞的。

3、异步阻塞: 客户端发送请求到服务端,此时服务端处理时间很长,但是客户端不会等待服务器相应,它可以做其他的任务,等待服务器处理完毕后在吧结果相应给客户端,客户端得到回调后处理服务端的响应,这种方式可以避免客户端一直处于等待状态,优化了用户体验,就类似网页里面发起的Ajax请求。

4、异步非阻塞: 客户端发送请求到服务端,此时服务端处理时间很长,这个时候的任务虽然处理时间很长,但是客户端可以做其他的事情,因为他是异步的,可以在回调函数里处理响应,同事服务端是非堵塞的,所以服务端可以去处理其他的任务,对此,这个模式就显得非常的高效了。

以上四点,除了第三点,其余的可以分别理解为BIO/NIO/AIO,如果你在面试过程中,面试官问你:请描叙一个BIO/NIO/AIO之间的概念跟区别,那么你就可以组织一下语言去回答他的问题,或者通过大白话的方式去跟面试官解释一下也是可以的。

接下来就给大家用大白话解释一下:

BIO:我去跟女朋友去吃海底捞,这个时候需要排队, 我就只能等别人出来之后我才能进去,此时啥也干不了,就只能在这儿等着,等过了一会有人出来了, 我就赶紧坐进去吃海底捞咯。

NIO:我去跟女朋友去吃海底捞,这个时候需要排队,没关系,我不着急, 我出去抽根烟慢慢陪女朋友逛逛街做做美甲等,弄完之后我在回来看看有没有空位,如果有我就进去吃海底捞,如果没有我在出去抽根烟或者我去打会游戏或者调戏调戏女朋友在回来看一下。

异步阻塞:我去跟女朋友去吃海底捞,这个时候需要排队,没事我等着,等有了新的空位,让服务员给我打个电话通知我就行了,通知了我, 我在进去,不通知我, 我就在这儿干等着。

AIO: 我去跟女朋友去吃海底捞,这个时候需要排队,没事,我一点儿也不着急,我去外面抽根烟玩个游戏跟女朋友调个情,等有了新的座位释放出来了,会有人通知我的,通知我了,我就可以进去吃了。

从刚刚的生活例子中可以看得出来:

同步 就是需要自己每隔一段时间,以轮询的方式去看看有没有新的空位。

异步 就是有了新的座位之后会通知你,通知你再回去吃海底捞。

阻塞 就是在等待的过程中,你不去做其他的事情,干等着。

非阻塞 就是你在等待的过程中可以去干别的事,比如抽烟,喝酒,玩手机,玩女朋友等等都行。。。

小结: 异步的优势显而易见,大大的提高了用户的体验,非阻塞使用系统资源开销远远小于阻塞模式,因为系统不需要去创建新的进程(或线程),大大的节约了系统的资源,如此多出来的系统资源可以给其他的中间件去服务了。

ajax同步非阻塞,同步、异步、阻塞与非阻塞理解相关推荐

  1. 同步I/O、异步I/O、阻塞I/0、非阻塞I/O、五种I/O模型、高性能网络模型

    10.I/O相关概念 https://www.cnblogs.com/xiaoxi/p/6525396.html 10.1.同步和异步 ​ 同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须 ...

  2. 阻塞/非阻塞/同步/异步方法和多线程的关系?没有任何关系,俩不挨着

    1.阻塞非阻塞异步同步是针对方法说的,是评判一个方法运行状态的.和多线程完全两个级别. 2.阻塞非阻塞异步同步是针对方法说的,是评判一个方法运行状态的.和多线程完全两个级别. 3.阻塞非阻塞异步同步是 ...

  3. 那些年让你迷惑的阻塞、非阻塞、异步、同步

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 在IT圈混饭吃,不管你用什么编程语言.从事前端还是后端,阻塞.非阻塞.异步.同步这些概念,都需要清 ...

  4. 异步同步、阻塞非阻塞、异步回调、线程队列和协程

    今天学习了异步同步.阻塞非阻塞.异步回调.线程队列和协程 一.异步同步和阻塞非阻塞 线程的三种状态: 1.就绪 2.运行 3.阻塞 阻塞:遇到了IO操作  代码卡住  无法执行下一行  CPU会切换到 ...

  5. 同步阻塞,同步非阻塞,异步阻塞,异步非阻塞IO

    在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作. 在比较这两个模式之前,我们首先的搞明白 ...

  6. 同步阻塞、同步非阻塞、异步阻塞、异步非阻塞与 I/O 多路复用、Java NIO 之间的联系

    同步阻塞.同步非阻塞.异步阻塞.异步非阻塞与 I/O 多路复用.Java NIO 之间的联系 先验知识 此处的异步指的是什么 同步.异步.阻塞.非阻塞 同步阻塞.同步非阻塞.异步阻塞.异步非阻塞 一个 ...

  7. 确定不来了解一下什么是 BIO NIO AIO 阻塞 非阻塞 同步 异步?

    本文内容涉及同步与异步, 阻塞与非阻塞, BIO.NIO.AIO等概念, 这块内容本身比较复杂, 很难用三言两语说明白. 而书上的定义更不容易理解是什么意思. 下面跟着我一起解开它们神秘的面纱. BI ...

  8. linux 中阻塞与非阻塞 同步与异步

    简单点说: 阻塞就是干不完不准回来, 非阻塞就是你先干,我先看看有其他事没有,完了告诉我一声. 我们拿最常用的send和recv两个函数来说吧.比如你调用send函数发送一定的Byte,在系统内部se ...

  9. recvfrom函数 非阻塞_那些年让你迷惑的阻塞、非阻塞、异步、同步

    那些年让你迷惑的阻塞.非阻塞.异步.同步 在IT圈混饭吃,不管你用什么编程语言.从事前端还是后端,阻塞.非阻塞.异步.同步这些概念,都需要清晰地掌握,否则,怎么与面试官谈笑风生(chui niu pi ...

最新文章

  1. BUUCTF-Reverce:不一样的flag
  2. 自然语言10_分类与标注
  3. 华为云FusionInsight MRS在金融行业存算分离的实践
  4. Django:静态文件staticfiles
  5. Ubuntu 10.10用LibreOffice替换OpenOffice
  6. 链接在HTML的英文,html超链接学习(适于初学者)(国外英文资料).doc
  7. Vue父组件访问子组件属性和方法、父子组件双向绑定(两种方法)
  8. POJ训练计划3096_Surprising Strings(STL/map)
  9. python比较运算符用于两个数_比较运算符用于比较两个数,其返回的结果只能是True或False(1.0分)_学小易找答案...
  10. 华为三层交换机-路由-硬件防火墙的配置
  11. Java工程师是做什么的 岗位职责都有哪些
  12. 阿里p7架构师带你领略JMM
  13. MySQL、Redis、MongoDB安装
  14. LVS部署准备工作-DRBD的部署
  15. 山水印|竹林野茶:在这个临近八月中秋的九月,再喝桂花香茶
  16. 抖音私信名片_抖音消息卡片_抖音跳转微信_抖音私信跳转_抖音落地页
  17. 2021年中国二手车出口概况分析:截至2021年6月我国累计出口二手车10889辆 出口量破万辆[图]
  18. PyCharm格式02: Simplify chained comparison
  19. wow服务器维护8月14,8月14日服务器例行维护公告(已完成)
  20. WPF DependencyObject

热门文章

  1. 要悄悄地学C语言,在成为大佬的路上一去不复返
  2. css行高包含哪些,表示行高的css属性是什么
  3. 目前人工智能存在的问题
  4. 墨卡托投影参数设置_墨卡托投影(Mercator)
  5. 打破壁垒,拥抱风口 | 易保全三大区块链应用,助力企业家资源变资产
  6. Python聚类色彩提取——Scipy-kmeans
  7. 软件测试(四)app测试的每日测试进度报告模板
  8. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之模板方法模式
  9. 关于Delphi实现按键“按住”的问题
  10. c语言判断一个数是否为质数的n次方,C语言中 输入一个数 判断这个数是否为3的N次方 求代码...