一个小故事

故事:小A烧开水。

出场人物:小A出场道具:普通水壶(放在煤气灶上的那种,为了方便简称:水壶);会响的水壶(水烧开了会响的那种,简称:响壶)。故事目的:小A要拿开水泡咖啡

小A为了实现目的,指定了4个计划:

1、用水壶烧水,并且站在煤气灶旁边,啥事不干,两眼直勾勾的盯着水壶,等水烧开。烧开后就去泡咖啡。同步阻塞

假设烧水和泡咖啡是在同一个线程中执行。

2、仍然用水壶煮水,不过此时不再傻傻得站在那里看水开没开,而是去玩局LOL,每当自己死了,就过来看看水开了没有。如果水开了就去泡咖啡。同步非阻塞

假设这里玩LOL,是另一个线程运行的。

3、动用响壶烧水,仍然站在煤气灶旁边,不过此时不两眼直勾勾的盯着壶了,而是听响,因为响壶水开时会用响声通知小A。异步阻塞

4、在计划3的基础上,小A不站在煤气灶旁边了,而是去玩局LOL,等听到响壶的声音提醒后,再去跑咖啡。异步非阻塞

有了上边的故事铺垫,我们再来看一看概念

同步:

同步这个词在很多场合下都会被使用,如果单从字面意思来看:相同的步骤。但是在编程的领域里讲,字面意思就不那么准确了。

对于编程领域来说,同步就是发起一个请求,直到请求返回结果之后,才进行下一步操作。简单来说,同步就是必须一件事一件事的做,等前一件做完了,才能做下一件事。

例子:此种模式很常见,比如我发起一个网络请求查询一个人的身份证,然后根据身份证查看这个人的详细信息。那么我查询详细信息的操作需要等待查询身份证的操作,那么此时查询身份证的操作就是一个同步操作。

异步:

异步很明显是与同步相对,二者的区别在于是否需要等待某操作的返回结果。简单来说,我们还是一个网络请求,如果我们此时不需要依赖这个请求的结果就能进行后续操作,那么此时这个网络请求就是一个异步操作。

当一个异步操作发出后,调用者在没有得到结果之前,可以继续执行后续操作。这就是异步。

同步和异步的区别:

二者的区别还是很明显的:请求发出后,是否需要等待请求结果,才能继续执行其他操作。

阻塞

阻塞的概念往往伴随着线程。阻塞一般是指:在调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会被唤醒执行后续的操作。

非阻塞

那么非阻塞,毫无疑问是阻塞的反向操作。非阻塞式的调用指:在结果没有返回之前,该调用不会阻塞住当前线程。

是不是感觉阻塞/非阻塞和同步/异步有异曲同工的地方?

其实,这两者存在本质的区别,面向的对象是不同的。

阻塞/非阻塞:进程/线程需要操作的数据如果尚未就绪,是否妨碍了当前进程/线程的后续操作。同步/异步:数据如果尚未就绪,是否需要等待数据结果。

并发和并行

二者的区分度非常的高,就在于四个字:是否同时。

并发:当有多个线程在操作时,如果系统只有一个CPU,操作系统只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的快速的切换不同的线程代码运行。

并行:当系统有多个CPU时,可以存在当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行。

举个小例子

小A吃饭吃到一半,电话来了,小A一直到吃完了以后才去接。既不支持并发也不支持并行

小A吃饭吃到一半,电话来了,小A停了下来接了电话,接完后继续吃饭。支持并发

小A吃饭吃到一半,电话来了,小A一边打电话一边吃饭。支持并行

转载于:https://www.cnblogs.com/yanghj0205/p/11001792.html

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

  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. jQuery版AJAX简易封装
  3. Mac OS X Terminal 101:终端使用初级教程
  4. python操作js中的输入_Python调用JavaScript代码的方法
  5. 002_XMLHttpRequest对象
  6. css的基本操作学习--css样式,选择器,hover,文字属性,文本属性,背景
  7. 反馈网络信息改善用户体验
  8. JavaScript getFullYear() 方法
  9. 服务器之后加码存储,浪潮信息重磅发布新一代 G6 存储平台
  10. 渗透测试入门8之端口渗透
  11. Solr4:加入中文分词IKAnalyzer2012 FF
  12. 006-Zabbix agent on Zabbix server is unreachable for 5 minutes
  13. list中随机获取n条、随机生成4位6位数工具类,1-n范围随机数,Math.random()生成随机数
  14. python stm32f401_使用Python编程STM32F401 Nucleo开发板快速入门
  15. 三维地图3DGIS平台技术指标要求规划
  16. 生活记录:其实超度的是活着的人
  17. allegro如何删除没有网络的走线,查还没有连的网络线
  18. C语言实现汉诺塔问题(保姆式讲解)
  19. 扫黑除恶Team second
  20. Lifecycle, LifecycleOwner, LifecycleObserver类讲解

热门文章

  1. Specify compute hosts with SSDs
  2. 【VLC-Android】LibVLC API简介(相当于VLC的MediaPlayer)
  3. 接口到底是什么(一语道破)
  4. J2EE架构[三层]
  5. 删除桌面上淘宝商城,高清电影,精彩小游戏图标
  6. Python学习心得——基础知识(六)
  7. 红帽系列linux自行配置本地yum源
  8. SQL Server中的重要观点
  9. Linux下时间戳格式和标准时间格式的转换
  10. Web 设计中的 5 个最具争议性的话题