目录

从线程的维度来理解同步和异步、阻塞和非阻塞。

从线程维度来理解同步阻塞、同步非阻塞、异步阻塞、异步非阻塞。


从线程的维度来理解同步和异步、阻塞和非阻塞。

先假设有 线程A线程B 两个线程,线程A 调用 线程B。

同步异步:

同步状态是线程A发起对线程B的调用请求后,在线程B处理消息过程中,线程A必须等待线程B处理完才能返回结果;如果线程B还未处理完,则线程B是不能返回结果的,线程A必须主动等待所需的结果

异步状态是线程A发起请求调用后,线程B直接返回,但是并没有返回给线程A对应的结果,而是等线程B处理完消息后,通过状态、通知或者回调函数来通知线程A,线程A处于被动接受结果的状态

同步和异步最主要的区别在于任务或者接口调用完成时消息通知的方式。

阻塞非阻塞:

阻塞状态是线程B在返回处理结果前,线程A会被挂起,不释放CPU执行权,线程A也不能做其他事情,只能等待,直到线程B返回处理结果后,才能接着向下执行。

非阻塞状态是线程A在没有获取线程B的处理结果前,不是一直等待,而是继续向下执行。如果此时是同步状态,则当前线程可以通过轮询的方式检查线程B的处理结果是否返回;如果此时是异步状态,则只有在被调用的线程处理后才会通知当前线程回调。

阻塞和非阻塞最主要的区别在于当前线程发起任务或接口调用后是否能继续执行。

所以同步和异步是对于线程A调用了线程B之后,线程A等待线程B的消息通知方式,而阻塞和非阻塞时对线程A调用线程B,线程A本身线程是否能继续执行

具体化的实例:煮饭

同步:你没有电饭锅,你需要在旁边一直等待饭煮好。

异步:你有电饭锅,你只需要放它自己煮,电饭锅煮好之后就会提醒你。

同步和异步主体是你与电饭锅之间的交互方式。

阻塞:如果没有电饭锅,你需要在旁边一直等待饭煮好,同时你什么都没有做;如果有电饭锅,你不需要在旁边等待饭煮好,同时你依旧什么都没有做。

非阻塞:如果没有电饭锅,你需要在旁边一直等待饭煮好,但是你可以做其他接下来要做的事情;如果有电饭锅,你不需要在旁边等待饭煮好,同时你依旧可以做其他接下来要做的事情。

阻塞和非阻塞主体是你本身在干什么。

从线程维度来理解同步阻塞、同步非阻塞、异步阻塞、异步非阻塞。

先假设有 线程A线程B 两个线程,线程A 调用 线程B。

同步阻塞:线程A在得不到线程B的结果前不返回,线程A进入阻塞态等待。

同步非阻塞:线程A在得不到线程B的结果前不返回,但线程A不阻塞,一直在CPU中运行。

异步阻塞:线程A调用线程B,线程A自己不阻塞,但线程B会阻塞来等待结果。

异步非阻塞:线程A调用线程B,线程B一直在运行,直到得出结果。

同样以具体化实例来理解:煮饭

同步阻塞:没有电饭锅,你需要在旁边等待饭煮好,同时什么事情都不做。

同步非阻塞:没有电饭锅,你需要在旁边等待饭煮好,但你可以边做事情边看饭煮好了没有。

异步阻塞:有电饭锅,你不需要在旁边等待饭煮好,只需等电饭锅煮好了提醒你,但是你什么事情都不做。

异步非阻塞:有电饭锅,你不需要在旁边等待饭煮好,只需等待电饭锅煮好了提醒你,你可以去做事情。

以上仅是个人的理解,如果有误,欢迎在评论区指正。

同步和异步、阻塞和非阻塞之间的关系以及同步阻塞、同步非阻塞、异步阻塞、异步非阻塞的含义相关推荐

  1. 1线程概念:线程和进程之间的关系,线程间可共享资源,线程间非共享资源,线程的优缺点

     1线程概念 1.1什么是线程 1.1.2线程和进程的关系 1.轻量级进程(light-weightprocess),也有PCB,创建线程使用底层函数和进程一样,都是clone. 2.从内核里看进 ...

  2. 0.9.2、线程池——核心线程数、阻塞队列、最大线程数之间的关系

    文章目录 线程池内部运行过程 验证思路 确保先提交的任务优先被线程池处理 确保执行的任务占有足够久的线程池资源 可观测的阻塞队列大小 充分的信息 代码 自定义线程池 结果 结论 基本几结论 新任务提交 ...

  3. 嵌入式开发之信号采集同步---VSYNC和HSYNC的作用以及它们两者之间的关系

    VSYNC和HSYNC的作用以及它们两者之间的关系 VSYNC和HSYNC的作用以及它们两者之间的关系 VSYNC和HSYNC是什么 VSYNC: vertical synchronization,指 ...

  4. java 静态与非静态之间的访问规则简述

    java 静态与非静态之间的访问规则简述 1.静态与静态之间直接访问 2.非静态(实例级别)访问静态直接访问 3.静态访问非静态(实例级别),必须先创建对象再访问 package com.qfedu. ...

  5. 监督学习与非监督学习之间的区别

    监督学习与非监督学习之间的区别 深度学习中会遇到常见的两个问题,一个是分类,一个是回归. 如果我们想要预测的值是一个离散的值,比如说物体识别,识别一个物体是猫还是狗,预测一张图片是美还是丑,还有手写数 ...

  6. 数据库之关系数据库之超码,候选码,主码,主属性,非主属性(非码属性)之间的关系

    数据库之关系数据库之超码,候选码,主码,主属性,非主属性(非码属性)之间的关系 超码(Super Key): 在关系模型中能唯一标识一个元组的属性集称为关系模式的超码. 候选码(Candidate K ...

  7. windows linux目录相互同步,使用cwRsync在Windows的目录之间增量同步文件

    rsync 是 Linux 上的一款文件同步工具,他可以以其特有的算法,对两个目录进行本机或跨机器同步. 下载安装 这款十分好用的工具,在 Windows 也可以使用,叫做 cwRsync ,首先需要 ...

  8. 非定向可连接广播(ADV_IND)、扫描请求(SCAN_REQ)、扫描回复(SCAN_RSP)、连接请求(CONNECT_REQ)之间的关系

    1.广播过程 可以看出,在三个广播信道,各广播(ADV_IND)一次. 2.广播与扫描请求.扫描回复之间的关系 可以看出,在从机广播(ADV_IND)的时候,主机发出扫描请求(SCAN_REQ),从机 ...

  9. 线程池大小设置,CPU的核心数、线程数的关系和区别,同步与堵塞完全是两码事

    线程池应该设置多少线程合适,怎么样估算出来.最近接触到一些相关资料,现作如下总结. 最开始接触线程池的时候,没有想到就仅仅是设置一个线程池的大小居然还有这么多的学问,汗颜啊. 首先,需要考虑到线程池所 ...

  10. 多CPU ,多核和进程以及多线程之间的关系

    今天开始,这个专题主要讲解 java 并发编程系列,从操作系统的进程.CPU.线程等底层开始, 到java 并发工具类,线程.线程池,并发容器.CAS.AQS等原理.源码和使用均做深入的解析.今天讲 ...

最新文章

  1. 【Linux】Centos7 解压zip文件
  2. Java面向对象抽象类案例分析
  3. 服务器上有涉密文件,涉密文件保密管理规定
  4. python3 super_python3的super详解
  5. 用算法描述对数几率回归,逻辑回归算法描述,参考答案
  6. ecshop 支持 php,ecshop支持PHP7的修改方法
  7. 7.Linux 高性能服务器编程 --- Linux 服务器程序规范
  8. 传奇私服DBC2000合并数据库时删除重复Name关键字SQL指令
  9. sql盲注 解决_sql盲注学习笔记
  10. 程序员啊 ,请保护好你的眼睛 !
  11. 各种芯片复位电路分析
  12. pdfbox或icepdf转换PDF为图片时,中文乱码(出现方框)处理
  13. 算术编码如何将原始数据编码为二进制
  14. html网页载入后焦点,HTML5中,用于指定页面加载后是否自动获取焦点的input属性是 答案:autofocus属性...
  15. 人物角色(Persona)
  16. c语言乐学编程作业答案,信息乐学|浅谈C语言
  17. 解决windows版本python下没有tkinter库问题
  18. 无盘服务器怎么安装游戏,看看我在农村网吧做无盘时系统与游戏安装的过程
  19. 老男孩shell 实战专业培训视频
  20. 微软的 Windows 终究没落了!

热门文章

  1. PHPExcel 导出excel(xls)
  2. #简明深入# Python 中的 iteritems() 和 items() 函数以及Python2.0到Python3.0的感悟
  3. RecyclerView零点突破(动画+边线篇)
  4. JavaScript “跑马灯”抽奖活动代码解析与优化(一)
  5. Linux 解压 压缩文件
  6. 私有服务器搭建全记录(一)
  7. cpu空载50度_三代锐龙用户必看:CPU待机50度降不下来?AMD的解决方案来了
  8. VIM从入门到精通(恢复文件)
  9. 微信小程序解析渲染Web App中的富文本内容
  10. macro min passed 3 arguments, but takes just 2 min(const _Tp, const _Tp, _Compare);