`
fenglin_Java
  • 浏览: 2336 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

同步/异步 阻塞/非阻塞

 
阅读更多
我觉得首先这四个概念不要都放在一起看,要两个两个来看。
首先同步和异步,
同步即客户端发出一个请求到服务器,客户端一直等待服务器的响应,在等待的服务器返回结果前不可以做任何其他的事情。

异步即客户端发出一个请求到服务器后,客户端就不管后续的事情了,继续干其它的事情,当服务器端完成响应后会自动回来提醒客户端。

下面再看阻塞和非阻塞
阻塞即当客户端向服务端发送请求后,服务器端会对请求进行处理(数据整合等),而没有立刻返回结果,此时客户端则会一直等待服务器端处理,直到服务器端处理完毕后返回结果。因为没有立刻返回结果,等待的这段时间就造成了阻塞。

非阻塞即当客户端向服务器发送请求后,服务器端会对请求进行处理(数据整合等),这时虽然服务器端没有处理完,但是也会立刻返回一个结果,但是是返回一个错误的结果到客户端。客户端接受到结果后会继续请求服务器端,如果服务器端没有处理完毕依然会返回一个错误的结果(立刻返回),客户端就这样请求,接收直到接收到正确的结果。因为每次都是立刻返回结果,所以并未对请求造成阻塞。

总结,同步和异步侧重的是一件事是否做完,同步时只有做完才能再做另外一件(请求发出后一定要等到结果的回馈,才进行另一个请求),异步是一件事情即使没做完也可以做另外一件(请求发出后,即使没有等到结果,依然会发出另外的请求)。阻塞和非阻塞则侧重的是每个请求是否立刻得到结果。所以如果从结果上来看,阻塞和非阻塞都属于同步,因为阻塞的情况下请求是一直等到响应结果才返回,期间并没有做其他的事情,非阻塞的情况下也一样,请求也是等到响应结果才返回,只不过这个结果返回时立刻的,无论结果正确还是错误。

如果上面的解释还是没有理解的话,我举个形象点的例子:
比如我们在星巴克点咖啡喝,
我们到柜台点一杯美式咖啡,
1)第一种情况服务员告诉我们说还要做一会儿才好,如果此时我们站在柜台等一直等到服务员做好咖啡后,你拿回座位上,然后和朋友聊天,这属于同步,也属于阻塞。
2)第二种情况服务员告诉我们说还要做一会儿才好,如果此时我们直接回到座位(带回来一个并没有好的结果)先和朋友聊了一会儿天,过了一会儿又到服务员那里问咖啡是否制作好了,就这样反复循环知道拿到制作好的咖啡。这属于非阻塞。
3)第三种情况,我点完咖啡后,直接回到座位什么都不用管一直和朋友聊天,服务员把咖啡做好了以后直接把咖啡送到你面前。这属于异步。

所以最后还有一点事要注意的除了异步以外,制作好的咖啡(即结果)都是请求放去获取的,但是异步却是响应方推过来的。
分享到:
评论

相关推荐

    同步、异步、阻塞、非阻塞的区别

    理解同步/异步与阻塞/非阻塞的区别后,我们可以进一步探讨这两种机制的组合应用。 1. **同步阻塞**:最常见的组合之一,适用于简单且对实时性要求不高的应用场景。例如,使用阻塞式的方法读取文件或数据库查询。 2...

    异步 同步 阻塞 非阻塞 的说明_异步同步阻塞非阻塞_

    在计算机编程和系统设计中,异步、同步、阻塞和非阻塞是四个非常重要的概念,它们关乎程序执行效率和资源管理。以下是对这些概念的详细解释。 **同步与异步** 同步(Synchronous)是指一个进程或线程在等待另一个...

    同步异步阻塞非阻塞

    同步异步阻塞非阻塞 IO 模型 在 Linux 环境下的网络 IO 中,有五种基本的 IO 模型:阻塞 IO、非阻塞 IO、IO 多路复用、信号驱动 IO 和异步 IO。其中,信号驱动 IO 不常用,因此主要介绍其余四种 IO 模型。 1. 阻塞...

    IO中同步、异步与阻塞、非阻塞的区别

    在软件开发领域,尤其是在涉及输入输出(IO)操作时,理解同步与异步、阻塞与非阻塞的概念是非常重要的。这些概念对于设计和实现高效的程序至关重要,尤其是在高并发和分布式系统中。 一、同步与异步 同步和异步是...

    深度讲解:同步/异步/阻塞/非阻塞/BIO/NIO/AIO

    常规的误区 ... ...  这个时候你问别人,刚刚代码发起的这个请求是不是一个同步请求,对方一定回答是。这是对的,它确实是。...对方一定是这样回答的,“因为发起... 不是因为代码卡住不动了才叫同步请求,而是因为它是同步

    tcp socket同步 异步 阻塞 非阻塞 的解释.zip

    tcp socket同步 异步 阻塞 非阻塞 的解释.zip 基本概念:同步、异步、阻塞和非阻塞的区别 同步异步与阻塞非阻塞的区别 C++ 同步异步与阻塞非阻塞的区别

    详解socket阻塞与非阻塞,同步与异步、I/O模型

    Socket编程中的阻塞与非阻塞、同步与异步是两个独立的概念,它们涉及的是不同层面的操作机制。这里我们将详细探讨这两个概念以及I/O模型。 首先,同步与异步是客户端(C端)调用服务端(S端)时的行为模式。同步...

    java 同步、异步、阻塞和非阻塞分析.docx

    Java 同步、异步、阻塞和非阻塞分析 Java 中的同步、异步、阻塞和非阻塞是四个相关但不同的概念,它们都是在多线程编程中解决耗时操作的方法。在这里,我们将详细介绍这些概念之间的区别和联系。 同步...

    聊聊同步、异步、阻塞与非阻塞.docx

    异步的实现方式会有两种:异步阻塞、异步非阻塞;同理,同步也会有两种实现:同步阻塞、同步非阻塞。 阻塞与非阻塞的比较 阻塞和非阻塞是从程序(线程)等待消息通知时的状态角度来说的。阻塞是指调用结果返回之前...

    QML中动态创建组件(同步/异步)的方法

    如果在非主线程中使用,记得使用异步方式,以避免阻塞UI。 异步加载组件是处理大组件或网络加载资源时的最佳实践。对于`Loader`,你可以通过监听其`status`属性的变化来实现异步加载: ```qml Loader { id: ...

    同步、异步、阻塞和非阻塞的概念

    在计算机编程,特别是网络编程中,同步、异步、阻塞和非阻塞是四个关键的概念,它们描述了程序执行时处理任务的方式。 同步是一种调用模式,它要求调用者在等待结果返回之前不能继续执行其他任务。例如,当你调用`...

    同步与异步--阻塞与非阻塞型IO

    根据I/O操作的不同特性,可以将其分为四大类:同步阻塞IO、同步非阻塞IO、异步阻塞IO以及异步非阻塞IO。本文将详细介绍这四种不同的I/O模型,帮助读者理解它们之间的差异及应用场景。 #### 二、同步阻塞IO 同步阻塞...

    同步异步阻塞非阻塞I/O思维导图

    同步异步,阻塞非阻塞,I/O学习总结的思维导图,需要结合Richard Stevens的书来学习

    异步 同步 阻塞 非阻塞 的说明1

    在IT领域,尤其是在多线程和并发编程中,同步、异步、阻塞和非阻塞是四个非常关键的概念。这些概念通常与操作系统、网络I/O、数据库操作以及Java等编程语言中的线程管理紧密相关。现在让我们逐一深入探讨它们的含义...

    C++网络编程例子说明异步非阻塞Socket的基本原理和工作机制

    用一个最简单的例子说明异步非阻塞Socket的基本原理和工作机制

    java 中同步、异步、阻塞和非阻塞区别详解

    在Java编程中,同步、异步、阻塞和非阻塞是四个重要的概念,它们涉及到多线程和并发处理,特别是在网络编程中尤为关键。理解这些概念有助于优化程序性能和提高资源利用率。 1. **同步**: 同步是编程中一种控制机制...

    JS 动态加载js文件和css文件 同步/异步的两种简单方式

    动态加载可以通过两种方式实现:异步加载和同步加载。 #### 1. 动态加载js文件 动态加载js文件可以通过创建一个script元素,并将其src属性设置为需要加载的js文件的路径。示例代码如下: ```javascript function ...

    简述JAVA同步、异步、阻塞和非阻塞之间的区别

    在IO操作中,我们可以将同步、异步、阻塞和非阻塞四种模式组合起来,形成四种不同的IO模式:同步阻塞IO、异步阻塞IO、同步非阻塞IO和异步非阻塞IO。同步阻塞IO是指Sender在发送请求后,等待Receiver的响应,直到...

    6-【高并发编程】再谈同步、异步、阻塞、非阻塞-1809261

    在计算机科学中,同步、异步、阻塞和非阻塞是并发编程中的核心概念,它们关乎程序如何处理数据输入/输出(I/O)操作。这些概念的理解对于编写高效的并发应用至关重要。 同步与异步主要关注的是数据处理的顺序和控制...

Global site tag (gtag.js) - Google Analytics