精华内容
下载资源
问答
  • 异步、同步、阻塞、非阻塞的说明解释,用于深入理解。
  • 五分钟掌握同步异步I/O同步阻塞同步非阻塞异步阻塞异步非阻塞网络通讯原理网络通讯的过程I/O阻塞I/O模型非阻塞I/O模型多路复用I/O模型信号驱动I\O模型异步I/O模型易于混淆的概念各I/O模型的对比与总结BIO、NIO、AIO ...

    网络通讯原理

    在讲I\O的时候,先简单讲下网络通讯原理。
    网络通讯四要素:本机的IP地址、子网掩码、网关的IP地址和DNS的IP地址。
    四要素有两种方式:一是静态获取,即手动配置;二是动态获取,即通过DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)获取

    网络通讯的过程

    • 浏览器解析网址(IP地址+协议+端口号),通过访问DNS域名系统服务器(基于UDP)获得IP地址
    • 生成HTTP消息并转交给Socket抽象层
    • 再经过传输层,网络层,链路层等。细节先省略。可以参照:网络通讯的的整体流程
      在这里插入图片描述
      Socket起源于UNIX,在UNIX“一切皆文件”的哲学思想下,Socket是一种从打开,到完成读、写操作,最后关闭的模式,服务器和客户端各自维护一个“文件”,在建立连接打开文件后,可以向自己的文件写入内容供对方读取或者读取对方的内容,通信结束时关闭文件。

    I/O

    用户进程中的一次完整I/O交互流程分为两阶段,首先是经过内核空间,也就是由操作系统处理;紧接着就是到用户空间,也就是交由应用程序。
    在这里插入图片描述
    通俗地将,可以将I/O分为两步:第一步是等待;第二步是数据搬迁。

    阻塞I/O模型

    阻塞I/O模型特点:在I\O执行的两个阶段(等待数据和拷贝数据)都被阻塞。
    下图中红色部分都是阻塞。
    典型应用:阻塞Socket、Java BIO
    优点:阻塞挂起不消耗CPU资源
    在这里插入图片描述

    非阻塞I/O模型

    相比较阻塞I/O,多了一个轮询访问内核是否存在。
    典型应用:Socket设置NON_BLOCK
    缺点:轮询调用,消耗CPU资源
    在这里插入图片描述

    多路复用I/O模型

    多路复用I/O模型和阻塞I/O模型并没有太大的不同,事实上,还更差一些,因为这里需要使用两次系统调用(select和recvfrom),而阻塞I/O模型只有一次系统调用(recvfrom)。但是,用Selector的优势在于它可以同时处理多个连接,所以如果处理的连接数不是很多,多路复用I\O模型并不一定比使用多线程加阻塞I\O性能要好,可能延时更大。优势在于能处于更多的连接。
    典型应用:Java NIO,Nginx(epoll,poll,select)
    在这里插入图片描述

    信号驱动I\O模型

    信号驱动I/O是指进程预先告知内核,向内核注册一个信号处理函数,然后用户进程返回不阻塞,当内核数据就绪时会发送一个信号给进程,用户进程便在信号处理函数中调用I/O读取数据。
    应用场景比较少。
    在这里插入图片描述

    异步I/O模型

    工作机制:告知内核启动某个操作,并让内核在整个操作完成后通知我们。
    与信号驱动I/O模型的区别:信号驱动I/O模型是由内核通知我们何时可以启动一个I/O操作,这个I/O操作由用户自定义的信号函数来实现,而异步I/O模型由内核告知我们I/O操作何时完成
    典型应用:Java 7 AIO,高性能服务器应用
    不阻塞,数据一步到位,采用Proactor模式
    缺点:需要操作系统底层支持,Linux2.5内核首现 2.6产的内部标准特性
    在这里插入图片描述

    易于混淆的概念

    • 同步阻塞
    • 同步非阻塞
    • 异步阻塞
    • 异步非阻塞

    同步和异步的区别:
    同步:应用程序主动发起请求询问状态(轮询)
    异步:服务方会主动通知请求方
    在这里插入图片描述
    阻塞和非阻塞的区别:
    阻塞:等待返回数据之前,当前的线程是挂起状态
    非阻塞:等待返回数据之前,当前的线程是运行状态,可以继续处理其他任务
    在这里插入图片描述

    列子:

    (1)这个时候,如果我们一直在店里面什么都不干,一直等待直到洗完照片,这个过程就叫同步阻塞。
    (2)当然,大部分人很少这么干,更多的是大家拿起手机开始看电视,看一会儿就会问老板洗完没,老板说没洗完,然后接着看,再过一会儿接着问,直到照片洗完,这个过程就叫同步非阻塞。
    (3)由于店里生意太好了,越来越多的人过来拍,店里面快没地方坐了,老板说你把手机号留下,我一会儿洗好了就打电话告诉你过来取,然后你去外面找了一个长凳开始躺着睡觉等待老板打电话,什么都不干,这个过程就叫异步阻塞(实际不应用)。
    (4)当然实际情况是,大家可能会先去逛街或者吃饭,或者做其他活动,这样一来,两不耽误,这个过程就叫异步非阻塞(效率最高)。

    各I/O模型的对比与总结

    阻塞程度:阻塞I/O>非阻塞I/O>多路复用I/O>信号驱动I/O>异步I/O,效率是由低到高的。
    在这里插入图片描述

    BIO、NIO、AIO

    BIO:一个连接只用一个线程来处理。
    NIO:单线程管理多个连接。缓冲区(Buffer)、选择器(Selector)和通道(Channel)
    AIO:异步I/O,把I/O读写操作完全交给操作系统。操作系统主动通知实现异步。

    BIONIOAIO
    面向流面向缓冲区操作系统主动通知用户线程
    阻塞I\O非阻塞I\OProactor设计模式

    参考资料
    [1]: Netty 4核心原理与手写RPC框架实战

    展开全文
  • 主要介绍了java 中同步、异步、阻塞和非阻塞区别详解的相关资料,需要的朋友可以参考下
  • 同步阻塞,同步非阻塞,异步阻塞,异步非阻塞区别和关系
    举个例子:

    1    同步阻塞和同步非阻塞

    两个银行:A和B。

        A银行让顾客先取号,然后排队,顾客要时不时关注电子屏幕来获取叫号信息。B银行,也是一样,但是不同的是它不需要顾客排队,顾客可以先做其他的事情。

        A相当于同步阻塞,B相当于同步非阻塞。

    2   异步阻塞和异步非阻塞

    两个银行:A和B。

        A银行让顾客取号,然后排队,银行会使用语音通知叫号信息。B银行和A银行是一样的,唯一的区别就是顾客不用排队,可以先做其他的事情。

        A相当于异步阻塞。B相当于异步非阻塞。
    展开全文
  • 今天老师讲了同步阻塞 同步非阻塞 异步阻塞 异步非阻塞。讲完感觉老师自己说的都是前后矛盾的。去网上找了几篇大佬的博客,看完后才有点点感悟。特地小结记下来,若有错误之处,欢迎大家斧正。 首先先弄清楚同步...

    今天老师讲了同步阻塞 同步非阻塞 异步阻塞 异步非阻塞。讲完感觉老师自己说的都是前后矛盾的。去网上找了几篇大佬的博客,看完后才有点点感悟。特地小结记下来,若有错误之处,欢迎大家斧正。

    首先先弄清楚同步和异步 ,阻塞和非阻塞。

    1. 同步和异步(指的是消息)

    同步和异步描述的是消息通信的机制

    同步:

    一次调用,一次返回;整个过程就是同步调用的过程;

    特点:针对每次都是一次同步的调用;

    异步:

    调用后,没有得到想要的返回(或者不care返回值);而是通过后面的回调、状态通知的方式获得结果;

    特点:通过回调callback、状态或者通知的方式告知调用方结果;

    2. 阻塞和非阻塞 (指的是进程/任务)

    描述的是程序在等待调用结果(消息、返回值)时的状态

    阻塞:

    调用方线程在等待结果返回过程中,线程被挂起,(调用方不能处理其它事情)等结果返回后,唤醒线程;

    特点:调用方被阻塞

    非阻塞:

    调用方线程在等待结果的过程中,线程没有被挂起,(可以处理其它事情)

    特点:调用方没有被阻塞

    这里的关系就像水火和冷热一样,是两组不同的相对概念。但是第一反应水是冷的,火是热的。其实呢开水温度也有100度,鬼火(磷火)也只有40度。

    老师以前叫promise和async时经常说同步要等它执行完,异步就可以不用管。导致和后面学的阻塞与非阻塞产生歧义。

    同步异步只是指消息通知给调用方的方式(被动查看,主动返回),阻塞和非阻塞才是等待任务进程调用结果(消息、返回值)时的状态。

    通俗的用最近去医院来举例

    同步阻塞

    去医院挂号,医院的提示铃声坏了,你怕错过什么事也不做(阻塞)一直紧紧盯着当前的就诊号消息(同步)。这叫同步阻塞,时间利用率低


    同步非阻塞 

    也是去医院的提示铃声坏了,你看着人多便开始刷剧(非阻塞)但是也时不时看一下当前的就诊号消息(同步)。这叫同步非阻塞,时间利用率较高。


    异步阻塞

    医院的提示铃声修好了,到一定时间它自己会广播提示(异步)。但是你也什么也不做也不看当前就诊信息,就发呆(阻塞)。这叫异步阻塞,效率和同步阻塞没什么两样,时间利用率低。


    异步非阻塞

    医院的提示铃声修好了,到一定时间它自己会广播提示(异步)。但是你这个时间坐下来看小说,打游戏,刷b站(非阻塞)。没有不刻意查看当前就诊号。这叫异步非阻塞,时间利用率高。

    同步是需要自己主动查询任务状态获取信息,异步是任务自己返回结果给调用方。调用方不必主动查询。阻塞就是等待。

    版权声明:本文为参考CSDN博主「安心写bug」的原创文章后的总结,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/qq_36963372/article/details/83353017

    展开全文
  • 老醉生梦死也不是事儿,于是就一边关注着屏幕,一边做着自己的工作---同步非阻塞 后来发现一心二用太tm累了,于是乎主要干着自己的工作,喜欢的女孩来电提醒我再去关注----异步非阻塞   同步异步区别:相当于...

    我喜欢一个女孩,于是每天就盯着屏幕守候在手机旁边等待她的来信---同步阻塞

    时间长了眼睛疼,于是就开启了来信提醒,听到声音时唤醒我迷醉的心---异步阻塞

    老醉生梦死也不是事儿,于是就一边关注着屏幕,一边做着自己的工作---同步非阻塞

    后来发现一心二用太tm累了,于是乎主要干着自己的工作,喜欢的女孩来电提醒我再去关注----异步非阻塞

     

    同步和异步区别:相当于状态的变化是又我主动发现还是对方告知

    阻塞非阻塞区别:相当于一心能否二用的事儿。

    展开全文
  • 老张爱喝茶,废话不说,煮开水。(网上众说纷纭,不过我还是认为这个更加准确) ...(同步非阻塞) 老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~
  • 主要介绍了科学知识:同步、异步、阻塞和非阻塞区别,本文分别讲解了这些概念,需要的朋友可以参考下
  • 2、你开始烧开水,你不在那里干等着,而是去玩会手机,但是你每隔段时间会来看看水开没开,直到水开了--同步非阻塞;3、你买了个会提醒水烧开的壶,开始烧开水,你无事可干就闲着,直到水开了壶提醒你水开了--异步...
  • 同步和异步,阻塞和非阻塞,根据字面意思也能够分出差别,但是同步,异步与阻塞,非阻塞很容易混淆,那么同步是不是就是阻塞,异步是不是就是非阻塞? 答案是否定的,虽然同步意味着阻塞,异步意味着不阻塞,但是...
  • 简单理解什么是同步阻塞/同步非阻塞,异步阻塞/异步非阻塞 举个栗子 1、你在家做饭,用普通的汤锅,米放进去,就站在锅边,傻等饭熟。——这叫同步阻塞 是不是觉得浪费了大量的时间,于是你想提高时间的利用效率。 2...
  • 使用事件队列,以及对事件完成状态的关注度角度分析1、同步阻塞 只处理事件队列中的一件事,并且一直关注是否完成,完成才继续处理其他事件2、同步非阻塞 开始处理一个事件后,不必等待完成,可以开始其他事件处理...
  • 主要介绍了JAVA同步、异步、阻塞和非阻塞之间的区别,文中讲解非常细致,帮助大家更好的理解学习,感兴趣的朋友可以了解下
  • 网上闲逛技术贴,看见一个关于理解同步阻塞、同步非阻塞、异步阻塞、异步非阻塞比较风趣的故事,简单明了,很容易理解,因此记录一下,希望更多人能看见。 故事原文: 老张爱喝茶,废话不说,煮开水。出场人物:老张...
  • 其实,同步包括了 同步阻塞 同步非阻塞 ,异步也包括了 异步阻塞 异步非阻塞 。在这里我先介绍阻塞/非阻塞的概念,然后把它们分别融入到同步/异步的情况中去讲解。 阻塞/非阻塞: 阻塞非阻塞关注的是...
  • 主要介绍了java 同步、异步、阻塞和非阻塞分析的相关资料,需要的朋友可以参考下
  • 同步/异步 阻塞/非阻塞区别

    千次阅读 2017-02-21 17:38:03
    同步 异步 阻塞 非阻塞
  • 目录一、什么是异步编程1、同步阻塞2、同步非阻塞3、异步方式14、异步方式2 一、什么是异步编程 我们以一种通俗易懂的方式来说说啥是同步、啥是异步;相信看完就不会再有疑惑了。 1、同步阻塞 有一天你饿了,想吃饭...
  • 理解同步/异步阻塞/非阻塞区别

    千次阅读 多人点赞 2017-03-30 09:37:04
    同步/异步阻塞/非阻塞区别...
  • NIO同步阻塞与同步非阻塞

    万次阅读 2019-02-27 15:09:26
    BIO与NIO IO与NIO区别:其本质就是阻塞非阻塞的区别。...IO为同步阻塞形式,NIO为同步非阻塞形式,NIO并没有实现异步,在JDK1.7升级NIO库包,支持异步非阻塞。 BIO:同步阻塞式IO,服务器实现模式为一个连接...
  • 同步异步阻塞非阻塞区别
  • 同步异步,阻塞和非阻塞概述 初学,欢迎探讨。 参考链接: https://www.cnblogs.com/orez88/articles/2513460.html 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。但一般而言,我们...
  • 非阻塞( Nonblocking) 同步异步关注的是通信方式,同步是得到结果后才返回调用。异步则是在调用发出后直接返回,通过其他方式告知结果。 阻塞是你收到结果前你啥都干不了,非阻塞则可以干其他事同时关注结果。 同步...
  • 一、同步与异步的区别同步和异步的理解同步:一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,才算完成,这是一种可靠的服务序列。要么成功都成功,失败都失败,服务的状态可以保持一致。异步:一...
  • 今天突然看到同步异步阻塞非阻塞的问题,一度陷入迷茫,经过我努力的汲取知识,在这里说下我的理解。 同步异步:可以理解成这是一种行为。 阻塞非阻塞:可以理解成这是一种状态。 举一个我看到的很不错的例子:...
  • 同步异步阻塞非阻塞

    2015-04-29 10:12:22
    同步异步阻塞非阻塞
  • 同步和异步、阻塞和非阻塞 首先说明我对这些概念也不是很清楚,以下内容是我做的一些理事。 同步和异步、阻塞和非阻塞这是两组概念,说的是不同的事情,同步和阻塞没有必然的联系,异步和非阻塞也没有必然的...
  • 同步阻塞、同步非阻塞、异步阻塞、异步非阻塞先验知识此处的异步指的是什么同步、异步、阻塞、非阻塞同步阻塞、同步非阻塞、异步阻塞、异步非阻塞一个生动的例子 先验知识   在解释这几个概念之前,需要注意的是:...
  •  前一段时间出去面试,被问到同步、异步与阻塞、非阻塞区别。我一时半会没有想出来,作为一个工作三年的人来说,实在很惭愧。我当时理解同步、异步属于两个进程中间的协作关系,例如使用浏览器访问一个网站,需要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 233,311
精华内容 93,324
关键字:

同步阻塞和同步非阻塞的区别