【NIO引入】BIO、AIO与NIO的区别

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

1.同步

例:买饭:自己亲自去饭馆买饭,这就是同步(自己处理IO读写)

2.异步

例:买饭:叫外卖送到家,这就是异步(IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(饭名和地址),OS需要支持异步IO操作API)

3.阻塞

例:办理业务:一直排队等待(调用会一直阻塞到读写完成才返回)

4.非阻塞

例:办理业务:抽号后就可以做其他事,如果你等不急,可以去问工作人员到你了没,如果没到你就不能办理业务。(如果不能读写,调用会马上返回,当IO事件分发器会通知可读写时再继续进行读写,不断循环直到读写完成)

BIO模型

同步阻塞

服务器实现模式:一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。

BIO图解:

这里写图片描述

伪异步IO

通过线程池机制优化了BIO模型

伪异步IO图解:

这里写图片描述

NIO模型

同步非阻塞

服务器实现模式为一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。

NIO图解:

这里写图片描述

AIO模型

异步非阻塞

服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,

注:AIO又称为NIO2.0,在JDK7才开始支持。

AIO流程图
这里写图片描述

BIO、伪异步、NIO和AIO模型的比较

这里写图片描述

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值