精华内容
下载资源
问答
  • 其实,同步包括了 同步阻塞 和 同步非阻塞 ,异步也包括了 异步阻塞 和 异步非阻塞 。在这里我先介绍阻塞/非阻塞的概念,然后把它们分别融入到同步/异步的情况中去讲解。 阻塞/非阻塞: 阻塞和非阻塞关注的是...

     同步/异步 和 阻塞/非阻塞 之间具有相关性,通常情况下为 同步阻塞 以及 异步非阻塞 ,所以很容易把同步和阻塞混淆,把异步和非阻塞混淆。

    其实,同步包括了 同步阻塞 和 同步非阻塞 ,异步也包括了 异步阻塞 和 异步非阻塞 。我先简单介绍阻塞/非阻塞的概念,然后分别对应到同步/异步的情况中。(如果我的理解有误,请帮我指出,感激不尽)

     

    阻塞/非阻塞:

    阻塞和非阻塞关注的是程序(线程)在执行过程中调用了另一个程序,在等待调用结果(消息,返回值)时的状态。

    阻塞:指调用结果返回之前,当前线程会被挂起,不能进行后续操作。
    非阻塞:指调用结果返回之前,当前线程还可以继续进行后续操作。

     

    同步和异步:

    同步和异步则关注任务(线程)之间的一种消息通信机制或是一种协作方式

    同步:指的是一个任务在执行过程中调用了另一个任务并依赖于它的返回结果,在没有得到返回结果前该任务不会返回(结束)

    此时,若该任务在等待返回结果的过程中不能继续执行后续操作,只是在等待的话,则称之为同步阻塞;若该任务在等待返回结果的过程中可以继续执行后续操作,只是不能返回(结束)的话,则称为同步非阻塞。

    异步:指的是一个任务在执行过程中调用了另一个任务,但只告诉另一个任务如何执行,而不依赖它的返回结果,该任务可以先返回(结束)

    类似的,此时若任务不能继续执行后续操作则称为异步阻塞;若可以继续执行后续操作则称为异步非阻塞,执行完后可以先返回。

     

    如何区别:

    个人认为区别阻塞/非阻塞和同步/异步的关键是:

    阻塞/非阻塞关注的是任务(线程)在调用其他任务后是否被挂起,还能否继续执行其他操作,能的话为非阻塞,不能的话为阻塞。

    同步/异步关注的是任务(线程)在调用其他任务后是否能先返回(结束),能先结束的话为异步,不能的话为同步。

    展开全文
  • 同步异步阻塞非阻塞的区别

    请参考一下内容:
    在这里插入图片描述

    展开全文
  • 主要介绍了JAVA同步、异步、阻塞和非阻塞之间的区别,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
  • 主要介绍了java 中同步、异步、阻塞和非阻塞区别详解相关资料,需要朋友可以参考下
  • 主要介绍了科学知识:同步、异步、阻塞和非阻塞区别,本文分别讲解了这些概念,需要朋友可以参考下
  • 同步异步以及阻塞和非阻塞的区别 https://blog.csdn.net/wanghang88/article/details/51848478 一、同步与异步的区别: 同步:一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,才算完成,这是一...

    同步异步以及阻塞和非阻塞的区别

    https://blog.csdn.net/wanghang88/article/details/51848478

    一、同步与异步的区别:

         同步:一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,才算完成,这是一种可靠的服务序列。要么成功都成功,失败都失败,服务的状态可以保持一致

           异步:一个服务的完成需要依赖其他服务时,只通知其他依赖服务开始执行,而不需要等待被依赖的服务完成,此时该服务就算完成了。被依赖的服务是否最终完成无法确定,一次它是一个不可靠的服务序列。

       

      消息通知中的同步和异步:

     

    • 同步:当一个同步调用发出后,调用者要一直等待返回消息(或者调用结果)通知后,才能进行后续的执行;
    • 异步:当一个异步过程调用发出后,调用者不能立刻得到返回消息(结果)。在调用结束之后,通过消息回调来通知调用者是否调用成功。

           调用者获取异步调用服务结果的两种方式:一种是主动去轮训查询异步回调的结果,一种调用依赖服务时传入一个callback方法或者回调地址,依赖服务完成之后去调用callback通知调用者,一般情况,这两种方式都要支持才是一种良好的异步回调设计方法。

     

    场景比喻:

     

    小明去买奶茶,可能会有两种方式

    • 3.1、小明点单交钱,然后等着取奶茶;
    • 3.2、小明点单交钱,然后奶茶妹给了小明一个小票,等小明的奶茶做好了,再告诉小明来取;
    • 第一种方式就是同步,就等着奶茶妹做好奶茶,奶茶做好之后,小明拿到奶茶才算完成整个任务
    • 第二种方式就是异步,奶茶妹给了小明一个小票,小明就算完成了。至于最后奶茶做好没有,反正奶茶妹会告诉小明的,那是后面的事情了。

           所以: 同步与异步着重点在消息通知的方式,也就是调用结果通知的方式。结合场景就是,拿到奶茶的方式。

     

        

    二、阻塞与非阻塞的区别

         

     

       阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务,函数只有在得到结果之后才会返回。

       非阻塞:非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

              

           虽然表面上看非阻塞的方式可以明显的提高CPU的利用率,但是也带了另外一种后果就是系统的线程切换增加

     

    1. 阻塞调用和同步调用不同的。对于同步调用来说,很多时候当前线程可能还是激活的,只是从逻辑上当前函数没有返回而已,此时,这个线程可能也会处理其他的消息。  
    2. 还有一点,在这里先扩展下:  
    3. (a) 如果这个线程在等待当前函数返回时,仍在执行其他消息处理,那这种情况就叫做同步非阻塞;  
    4. (b) 如果这个线程在等待当前函数返回时,没有执行其他消息处理,而是处于挂起等待状态,那这种情况就叫做同步阻塞;  
    5.    所以同步的实现方式会有两种:同步阻塞、同步非阻塞;同理,异步也会有两种实现:异步阻塞、异步非阻塞;  

     

     

    场景比喻:

    还是小明去买奶茶,可能会有两种方式

       

    • 2.1、小明点单交钱,然后等着取奶茶;

     

                 同步阻塞:小明在等着取奶茶的时候呢,啥都不干,就等着;小明等奶茶的行为就叫做阻塞,小明在等奶茶的时候,阻塞了!而这种方式又叫做同步阻塞。

                异步阻塞:小明在等着取奶茶的时候呢,翻出手机,一会翻翻微信朋友圈,一会瞅瞅奶茶妹有没有做好奶茶;小明这种行为就叫做非阻塞,因为没有阻塞在等奶茶这件事情上。而这种方式又叫做同步非阻塞。

     

    • 2.2、小明点单交钱,然后奶茶妹给了小明一个小票,等小明的奶茶做好了,再告诉小明来取

            异步阻塞:奶茶妹给了小明一个小票,然后小明还是傻等着;小明这种拿到票还傻等着的行为,就叫阻塞。而这种行为,又叫做异步阻塞!这种最傻了。

     

           异步非阻塞:奶茶妹给了小明一个小票,然后小明翻出手机一直刷朋友圈,过了一会儿奶茶妹说小明你的奶茶好了,过来拿,小明才放下手机去拿奶茶。这种方式就叫做非阻塞,又叫着异步非阻塞!

     

        所以:阻塞与非阻塞的着重点在于当前线程等待消息返回的行为。换成场景就是,小明等奶茶的行为。

        

    总结:

     

    • 1、同步阻塞:小明啥都不干等奶茶。
    • 2、同步非阻塞:小明一边玩手机一边等奶茶。
    • 3、异步阻塞:小明拿着小票啥都不干等着奶茶妹告诉他奶茶好了
    • 4、异步非阻塞:小明拿着小票玩着手机等着奶茶妹告诉他奶茶好了

     

    转载于:https://www.cnblogs.com/handsome1013/p/9122215.html

    展开全文
  • 理解同步/异步阻塞/非阻塞的区别

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

    同步、异步:

    • 概念:消息的通知机制
    • 解释:涉及到IO通知机制;所谓同步,就是发起调用后,被调用者处理消息,必须等处理完才直接返回结果,没处理完之前是不返回的,调用者主动等待结果;所谓异步,就是发起调用后,被调用者直接返回,但是并没有返回结果,等处理完消息后,通过状态、通知或者回调函数来通知调用者,调用者被动接收结果。

    阻塞、非阻塞:

    • 概念:程序等待调用结果时的状态
    • 解释:涉及到CPU线程调度;所谓阻塞,就是调用结果返回之前,该执行线程会被挂起,不释放CPU执行权,线程不能做其它事情,只能等待,只有等到调用结果返回了,才能接着往下执行;所谓非阻塞,就是在没有获取调用结果时,不是一直等待,线程可以往下执行,如果是同步的,通过轮询的方式检查有没有调用结果返回,如果是异步的,会通知回调。

    经典故事案例:

    • 人物:老张
    • 道具:普通水壶(水烧开不响);响水壶(水烧开发出响声)
    • 案例:
                           1、同步阻塞:
                                 老张在厨房用普通水壶烧水,一直在厨房等着(阻塞),盯到水烧开(同步);
                           2、异步阻塞:
                                 老张在厨房用响水壶烧水,一直在厨房中等着(阻塞),直到水壶发出响声(异步),老张知道水烧开了;
                           3、同步非阻塞:
                                 老张在厨房用普通水壶烧水,在烧水过程中,就到客厅去看电视(非阻塞),然后时不时去厨房看看水烧开了没                                                           (轮询检查同步结果);
                           4、异步非阻塞:
                                 老张在厨房用响水壶烧水,在烧水过程中,就到客厅去看电视(非阻塞),当水壶发出响声(异步),老张就知道                                                        水烧开了。

    注意:
             1、通常的IO、NIO操作,都是同步的;
             2、JDK1.7提供了AIO异步操作的类,如AsynchronousSocketChannel、AsynchronousServerSocketChannel等;
                   Java也可以通过多线程,在开启的线程中,通过回调方式,实现异步操作。
             ......

    展开全文
  • 同步和异步,阻塞和非阻塞,这两组概念出现在IO操作中常常让人混淆不清。这里根据自己看到,想到,整理下自己理解,权当交流。 IO操作其实可以分成两个步骤,请求IO操作和执行IO操作。一般IO调用过程是这样...
  • 异步&非阻塞 异步or 同步 关注是 发出调用后,当前这个...阻塞还是非阻塞关注是:程序等待调用结果<返回值>状态,在无法得到返回值情况下,调用是否会阻塞当前线程<调用过程> 图解 ...
  • 做网络IO编程我们或多或少都会接触到同步、异步、阻塞、非阻塞等相关技术术语,但是到底什么是同步异步阻塞非阻塞,他们怎么定义,有什么区别,很多童鞋可能一直...2、同步非阻塞 3、异步阻塞 4、异步非阻塞 ...
  • 同步和异步与阻塞与非阻塞是在通信I/O中常用字眼,之前在许多地方同步与阻塞,异步与非阻塞常常被混为一谈,带来了许多混乱,其实同步、异步阻塞、非阻塞是两个不同概念。最近随着异步IO(AIO)越来越多...
  • 同步是:每次自己主动的去问要结果 异步是:不用管,等好了会通知我的 集群:是不同的机器做相同的事 分布式是:每个模块都单独的独立处理,相互之间协调才能完成一件事 ...同步非阻塞的  ...
  • 同步和异步关注是消息通信机制 (synchronous communication/ asynchronous communication) 所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。 ...
  • 老张爱喝茶,废话不说,煮开水。 出场人物:老张,水壶两把(普通水壶...(同步非阻塞) 老张还是觉得自己有点傻,于是变高端了,买了把会响笛那种水壶。水开之后,能大声发出嘀~~~~ 噪音。 3 老张把响水壶放到
  • 同步/异步 阻塞/非阻塞 的区别

    千次阅读 2017-02-21 17:38:03
    同步 异步 阻塞 非阻塞
  • 2、你开始烧开水,你不在那里干等着,而是去玩会手机,但是你每隔段时间会来看看水开没开,直到水开了--同步非阻塞;3、你买了个会提醒水烧开壶,开始烧开水,你无事可干就闲着,直到水开了壶提醒你水开了--异步...
  • 一、概念 异步:某个事情需要10s完成。...非阻塞:尝试做,如果不能做,就不做(直接返回),如果能做,就做。   前两者后两者不容易区分,不过前两者更多有涉及到多线程交互(消息)场景。   二、
  • 同步与异步 同步与异步关注是消息通信机制。 同步即在发送一个调用请求后,在没有得到... 阻塞和非阻塞关注是程序在等待调用结果(消息,返回值)时状态 阻塞调用是指在调用结果返回之前,线程会被挂起,不继
  • 同步和异步,阻塞和非阻塞是大家经常会听到概念,但是它们是从不同维度来描述一件事情,常常很容易混为一谈。1. 同步和异步同步和异步描述是消息通信机制。同步当一个request发送出去以后,会得到一个response...
  • 一、同步~异步~阻塞~非阻塞  同步(Synchronous)异步(Asynchronous)概念本来来自通信领域:首先是通信的同步,主要是指客户端在发送请求后,必须得在服务端有回应后才发送下一个请求,所以这个时候...
  • 阻塞和非阻塞的区别是什么? 你可以尝试在脑子里想一下这个问题,先有自己的答案,然后再往下看 。 。 。 。 。 。 来看一下答案 同步和异步的关注点的是值的返回方式, 同步是服务方处理完后再响应用户。 而异步是...
  • 同步非阻塞) 老张还是觉得自己有点傻,于是变高端了,买了把会响笛那种水壶。水开之后,能大声发出嘀~~~~噪音。 3 老张把响水壶放到火上,立等水开。(异步阻塞) 老张觉得这样傻等意义不大 4 老张把响水壶放...
  • “阻塞”与"非阻塞"与"同步"与“异步"不能简单从字面理解,提供一个从分布式系统角度回答。1.同步与异步同步和异步关注是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,...
  • 一、同步和异步 同步和异步是一种 消息通知机制 同步:发出一次请求后必须等到该请求有返回结果,才能继续下一步工作;请求者需主动询问是否有返回结果; 异步:发出一次请求后无需等到该请求有返回结果,即可进行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,964
精华内容 785
关键字:

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