同步,异步 和阻塞,非阻塞

原创 2018年04月14日 22:50:10

同步和异步:主要是看应用程序和系统内核的交互行为。当然咱们编写的程序就是应用程序。当我们的程序主动向内核发送询问请求的时候,这就属于同步,即应用程序需要从你这知道结果,但不是立马,应用程序会不定时的来询问内核;而异步则是内核主动通知应用程序----你需要地结果出来了,即内核 主动通知应用程序。

阻塞和非阻塞:是应用程序的在做事情的状态,做某一事情的时候不能做其他事情,这就是阻塞;在做某一事情的的同时,我可以去做别的事情。

在银行办业务。

阻塞:我必须去排队(其他所有事情都不能做),哪怕我前面只有一个人,我都要等前一个人完成,我才能办理业务。

非阻塞:我也必须去排队,但是我可以先给朋友打个电话聊个天。

同步:我会主动的去询问 我能办理业务了么

异步:在轮到我办理业务的时候,银行人员会来告诉我  该我了。


那么开始组合了:

同步阻塞:我在排队,并且什么别的事都不能做,并且隔一会问一次:该我了么?

同步非阻塞:我在排队,我可以看个电影(不能专心致志),但是会隔一会问一次:该我了么?

异步阻塞:我会排队,并且别的什么事都不能做,但是我可以不用老是询问了,有工作人员回来通知我。

异步非阻塞:我会排队,可以专心致志看个电影,不用老是抬起头问询问了,会有工作人员来通知我。


以上只是把相关概念用大白话说一遍,不牵扯到具体代码实现,我目前还不能做到代码实现,或者说我不相信自己能够写出来。

其实仔细想想,io和nio的出现是有一定的逻辑的,就如同我说的那些生活中的例子,当然不能说那个方式更好,只有更加适合的。

BIO/IO就是传统的阻塞时式IO,也就是 同步阻塞

NIO就是非阻塞式IO,也就是 同步非阻塞

AIO就是异步io,包括 异步非阻塞和异步阻塞。其实针对上面你的例子,异步的作用就是不需要你去等待结果,会有人来通知你结果,那么你就没有(干等着)阻塞的必要了。。。。

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

同步、异步、阻塞、非阻塞的概念一直是计算机学科中很重要的概念,而这种细微的差别常常被大家混淆,我自己在过一段时间后也需要复习。今天再次翻出这个概念,仍然觉得不够清晰,今天再次深入了解了这四大天王。 以...
  • xxxxxx91116
  • xxxxxx91116
  • 2016-04-24 16:13:35
  • 8199

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

一、同步与异步的区别:      同步:一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,才算完成,这是一种可靠的服务序列。要么成功都成功,失败都失败,服务的状态可以保持一致   ...
  • wanghang88
  • wanghang88
  • 2016-07-07 09:52:48
  • 1854

深入理解并发/并行,阻塞/非阻塞,同步/异步

操作系统
  • sinat_35512245
  • sinat_35512245
  • 2016-12-23 10:44:17
  • 2687

5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO

5种IO模型:阻塞IO模型、非阻塞IO模型、IO复用模型、信号驱动IO模型、异步IO模型;IO模型比较:阻塞IO调用和非阻塞IO调用、阻塞IO模型和非阻塞IO模型、同步IO和异步IO...
  • tjiyu
  • tjiyu
  • 2016-10-28 20:01:41
  • 3907

理解同步/异步和阻塞/非阻塞的区别

同步/异步和阻塞/非阻塞的区别...
  • linhuaiyang
  • linhuaiyang
  • 2017-03-30 09:37:04
  • 693

同步阻塞与异步非阻塞适用场景

异步的优势高并发,同步阻塞IO模型的并发能力依赖于进程/线程数量,例如 php-fpm开启了200个进程,理论上最大支持的并发能力为200。如果每个请求平均需要100ms,那么应用程序就可以提供200...
  • lijingshan34
  • lijingshan34
  • 2017-04-21 17:01:15
  • 580

同步,异步,阻塞,非阻塞,BIO,AIO,NIO 理解

对于同步,异步,阻塞,非阻塞的理解可以看一个例子: 以银行取款为例: 同    步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写)。 异    步 : 委托一小弟...
  • shukebai
  • shukebai
  • 2015-04-17 15:43:28
  • 1138

java 同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO

转自: http://furturestrategist.iteye.com/blog/1463369 背景知识: java中的IO主要源自于网络和本地文件。 IO的方式通常分为几种,同步阻塞的BI...
  • cuidiwhere
  • cuidiwhere
  • 2012-08-12 14:07:25
  • 5382

【java】同步、异步、阻塞、非阻塞

理解同步与异步 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。  异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。    举个例子:普通...
  • lzm18064126848
  • lzm18064126848
  • 2015-09-20 11:40:45
  • 3622

Netty之BIO(同步阻塞IO)、PIO(伪异步阻塞IO)、NIO(异步非阻塞IO)、AIO(异步非阻塞IO)、Netty

学习书籍:Netty权威指南 多种IO方式的比较: 1、BIO(同步阻塞IO) 使用ServerSocket绑定IP地址和监听端口,客户端发起连接,通过三次握手建立连接,用socket来进行通信,通过...
  • kevinxxw
  • kevinxxw
  • 2015-08-21 17:27:54
  • 5145
收藏助手
不良信息举报
您举报文章:同步,异步 和阻塞,非阻塞
举报原因:
原因补充:

(最多只允许输入30个字)