链接:https://www.zhihu.com/question/26393784/answer/1714468454
链接:https://www.zhihu.com/question/26393784/answer/507924045

同步,异步

是指两个线程之间的关系,如果线程A对线程B发起请求,A要一直到等B的结果返回了才能继续往下运行,A和B就是同步关系。如果线程A对线程B发起请求之后,不在原地等结果,直接干别的事情去了,等B有结果了再通知A,A和B的关系就是异步关系。

阻塞,非阻塞

是指单个线程的状态,如果线程A对线程B发起请求,A线程要等B线程的结果,A在等的过程中不干别的,线程挂起,休眠,就是阻塞状态;如果A线程不用等B的结果,直接干别的去了,那么就是非阻塞状态。

同步不同步,阻塞不阻塞,这两个概念是互相独立的

也就是说他们一共可以搞出来四种情况:

  1. 同步+阻塞:程序代码一行一行执行,上一行不执行完,下一行就不会被执行;如果上一行卡住了迟迟不结束(阻塞了),那么整块代码全部卡住。遇到这种代码的感觉就是程序突然卡住死机,小圈圈来回转,此时用户无法区分电脑是在冥想还是挂了,所以体验非常差。
  2. 同步+非阻塞:这就是最常见的程序,一行一行序贯执行,且没有哪一行会出现卡死的情况。这种程序最符合人们对计算机程序的心理预期,也就是程序能做到“有问立答”。
  3. 异步+阻塞:虽然代码中某些部分会卡住,但是由于采用了异步的处理方式(包括callback、future、promise、reactiveX、async-await/coroutine),所以卡住行的下一行不会傻等,整个代码块也就不会卡住。这时虽然做不到有问立答,但是会给你一张小卡片上面写着“已受理,请稍等”,这种体验也不会太差。
  4. 异步+非阻塞:非阻塞情况下一般不会采用异步编程,这个组合属于脱裤子放屁。但是在兼有阻塞非阻塞的代码块中,由于整块都可能采用异步编程,所以也会出现这种组合。体验上讲也是有问立答,只是会稍稍慢一点,但感觉不出来。一般来说,先看代码中有没有阻塞的部分,如果有阻塞了那就要立即考虑是不是上异步,也就是选取一种异步范式(callback、future、promise、reactiveX、async-await/coroutine)来重写代码。
    在Vert.x中的判断阻塞的标准是,任何一个调用必须2秒内返回结果,一旦超时就认为这段代码是阻塞的,也就是要变成异步。

阻塞、非阻塞,同步、异步相关推荐

  1. 异步通知是什么意思_一次相亲经历,我彻底搞懂了阻塞非阻塞、同步异步

    看到标题,可能你会想,相亲跟阻塞/非阻塞,同步/异步有啥关系,这个逗b不知道在想什么东西.不要急,且听我慢慢道来 年纪大了,一回家七大姑八大姨就各种催婚,都说要给我介绍女朋友.这不,刚刚门口,我的大姨 ...

  2. 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行,太实用了!

    作者:Martin cnblogs.com/mhq-martin/p/9035640.html 基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运 ...

  3. 迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)...

    常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数据,然后使用适合的视图展示详情数据. 如果网速很慢,代码发起一个HTTP请求后,就卡住不动了,直到十几秒后才拿到HTT ...

  4. 同步 异步 阻塞 非阻塞概念区分

    老张爱喝茶,废话不说,煮开水. 提前剧透一下:同步和非同步主要用来形容被调用线程,阻塞非阻塞用来形容主线程的. 出场人物:老张(主线程),水壶(被调用线程)两把(普通水壶,简称水壶:会响的水壶,简称响 ...

  5. 【面试】迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)...

    网上有很多讲同步/异步/阻塞/非阻塞/BIO/NIO/AIO的文章,但是都没有达到我的心里预期,于是自己写一篇出来. 常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数 ...

  6. Socket 同步/异步 与阻塞/非阻塞区别

    2019独角兽企业重金招聘Python工程师标准>>> 在网上看了很多答案,也没找到合适的,也许本文也不是合适答案:) 同步和异步关注的是消息通信机制,而阻塞非阻塞关注的是程序在等待 ...

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

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

  8. NIO详解(二): BIO 浅谈 同步 异步与阻塞 非阻塞

    在我们了解Java NIO/BIO的网络通信之前,我们先了解一下常用的阻塞/非阻塞模型以及同步/异步的概念 一.阻塞和非阻塞 从简单的开始,我们以经典的读取文件的模型举例.(对操作系统而言,所有的输入 ...

  9. 异步/同步、阻塞/非阻塞的理解

    异步/同步.阻塞/非阻塞的理解 [同步和异步] 通俗的讲: 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式.  异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个 ...

  10. 迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章

    来源:编程新说 网上有很多讲同步/异步/阻塞/非阻塞/BIO/NIO/AIO的文章,但是都没有达到我的心里预期,于是自己写一篇出来. 常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTT ...

最新文章

  1. 换血吃药改基因,硅谷富豪们想用钱收买死神丨视频
  2. 【java8中的时间操作】java8中获取月的最后一天或者总天数,JDK8 LocalDate AP
  3. Rube GoldbergSpring整合
  4. Windows Phone 实用开发技巧(18):使用SystemTray显示全局消息提醒
  5. TCP通过带外数据实现心跳检测机制
  6. ]MySQL操作命令语句实例
  7. hadoop命令使用put上传文件报错
  8. 想做影视“化妆师”,首先要知道影视后期调色的8个基本步骤!
  9. TSP-遗传算法求解
  10. 解除隐藏文件cmd命令_cmd命令怎么隐藏电脑上的文件
  11. 优质高效,阿里甩出SpringBoot巅峰之作,进阶不二之选
  12. 最新超唯美情侣网站开源+带后台/亲测可用
  13. PARSEC benchmark 编译
  14. 技术人要有一些兴趣爱好
  15. labelcommand打印条码_VB应用程序中打印条形码的方法
  16. Linux在当前文件夹下打开终端
  17. 怎么给照片添加马赛克?这些方法值得收藏
  18. 出门问问发布企业级场景的智能交互屏TicKasa Show,适用于多种场景
  19. 网络攻击测试软件,局域网攻击软件如何检测
  20. 投资品讲解及国债逆回购

热门文章

  1. python docx转换成txt文本
  2. memcache set操作详解
  3. python代码加密运行_python源码下载后怎样进行加密
  4. 网络拓扑距离的高效KNN查询(结项报告)
  5. 身份证属地查询,国内身份证号码查询验证(酒店管理系统自动化)
  6. java服务器端集成友盟,Android友盟推送集成
  7. CSRF 攻击是什么?如何防范?
  8. 延迟满足 —— 达到目标需要忍住重重诱惑
  9. IDEA java类文件左下角出现橙红色的圆形小标识
  10. MYSQL命令集大全