• 同步与异步、阻塞与非阻塞区别


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    SQL Server和Oracle数据库索引介绍
    ITPUB上一个Oracle面试题
    国服《巫妖王之怒》3.35冰双持新手献礼指南
    WLK奥法输出循环
    flume架构初接触
    密码校验正则表达式(java 环境)
    初学Mahout测试kmeans算法
    身份证校验(java)
    gcc 中 O选项对空函数的优化
    《肖申克的救赎》语录
  • 原文地址:https://www.cnblogs.com/xubiao/p/6501654.html
Copyright © 2020-2023  润新知