链接: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. 深入理解Python闭包概念
  3. 基于标准C语言的数字图像处理基本框架(转)
  4. ------------------字节流---------------------
  5. 亲和性分析_0(python数据挖掘入门与实践-实验1)
  6. dump分析工具_阿里P8教你如何使用Jprofile解析dump文件
  7. 区块链教程Fabric1.0源代码分析configtx#genesis-兄弟连
  8. sola病毒的手工杀除
  9. Windows版变色龙
  10. 高德地图vs百度地图
  11. Windows下利用N2N访问内网资源,点对网的实现
  12. 如何搭建一个自己的微信公众号
  13. C语言实现连接MySQL服务器CURD
  14. 【图像检测-缺陷检测】基于灰度共生矩阵实现痕迹检测matlab代码
  15. 学生HTML游戏网页作业作品——HTML+CSS+JavaScript魔域私服游戏HTML(1个页面)
  16. 快速入门Docker
  17. 山高有攀头,路远有奔头~
  18. C语言 变量的指针和指向变量的指针变量
  19. 可口可乐调研——案例分析
  20. 低代码内参:低代码平台 Airtable 再获 7.35 亿美元的融资,一年内估值翻倍达117亿美元

热门文章

  1. TSC TTP244Pro 标签打印机打印不走纸
  2. linux查看IP端口占用情况
  3. if语句详解(c语言)
  4. 关于LSTMs的理解
  5. Linux cp命令的使用方法与参数含义
  6. 上海58同城区域小区请清单(数据)
  7. 【矩阵论】1.准备知识——Hermite阵,二次型,矩阵合同,正定阵,幂0阵,幂等阵,矩阵的秩
  8. 亥姆霍兹线圈分类简介
  9. MIME类型是什么?包含哪些类型?
  10. Redis五种数据结构及实现原理