zoukankan      html  css  js  c++  java
  • 同步与异步、阻塞与非阻塞区别

    为了弄清这几个概念还和同事讨论了一番,然后还查了一些资料,总结一下。

    同步与异步是在客户端向服务端发请求的时候,客户端做出的处理方式。

    同步:客户端向服务端发出一个请求,客户端就一直在等着服务端的返回结果。

    异步:客户端向服务端发出一个请求并向服务器说:你处理完了通知我一声哦,我就不在这儿一直等着了。

    阻塞与非阻塞是发起任务的人(线程)的当前状态。

    阻塞:线程A执行到某一行因为X(花费时间)被阻塞了,就一直等待X先执行完了再执行线程A。(挂起)

    非阻塞:线程A执行到某一行因为X(花费时间)被阻塞了,就不管X了,接着处理线程A后面的程序。(运行)

    自己想到在食堂打饭的例子:

    同步:我到食堂打饭,阿姨给我了一个排号,我拿着排号一直等在窗口等待到端饭。

    异步:我到食堂打饭,阿姨给我了一个排号,我就坐在食堂板凳上,等阿姨叫我这个号我再去端饭。

    所以同步与异步强调的是处理方式。

    阻塞:我在等着端饭的过程中,我什么事情也不干,就这样一直等着。

    非阻塞:我在等着端饭的过程中,我拿起手机看了看新闻。

    所以阻塞与非阻塞强调的是线程的状态。

    所以又推演出同步阻塞、同步非阻塞和异步阻塞、异步非阻塞概念。

    这样理解起来就不会搞混淆了。

  • 相关阅读:
    C++:变量声明和定义的关系
    Docker 方式搭建 zookeeper + kafka 集群
    Centos7.6系统下docker的安装
    CentOS7服务器下安装配置SSL
    《深入浅出密码学》|ing
    车联网入侵检测技术(持续更新)
    Hive的安装及交互方式
    Centos7中安装MySQL5.7记录
    Zookeeper-分布式锁代码实现
    【Java】String字符串的最大长度
  • 原文地址:https://www.cnblogs.com/xubiao/p/6501654.html
Copyright © 2011-2022 走看看