BIO和NIO和AIO

Java中的BIO、NIO和AIO可以理解为Java语言对操作系统中不同IO模型的封装。这样,程序员在需要使用不同IO模型时,无需从操作系统层面考虑,只需要使用Java中的API。

在了解BIO、NIO、AIO之前,我们需要搞清楚几个概念。

同步即发起一个调用后,被调用者未处理完请求之前,调用不返回

异步就是发起一个调用后,立刻得到被调用者的表示已接收到请求的回应,但并没有返回结果。被调用者通常依靠事件,回调等机制来通知调用者其返回结果。

阻塞就是发起一个请求后,调用者会一直等待请求结果返回,在此期间无法从事其他任务。

非阻塞就是发起一个请求后,调用者不用一直等着结果返回,可以先去干其他事情。

那么BIO、NIO、AIO呢?

  • BIO — 同步阻塞IO
    在服务器中的实现为一个连接一个线程,适用于连接数目小且固定的架构。在BIO下,如果连接不做任何事,就会造成不必要的开销。且连接数目过大会导致服务器压力过大而宕机,当然这一点可以通过线程池来实现“伪异步IO”来解决。BIO的并发局限在应用中。
  • NIO — 同步非阻塞IO
    在服务器中的实现为一个请求一个线程,适用于连接数目多且短的架构,比如聊天服务器、弹幕系统。NIO的流是非阻塞的,所有的数据都使用缓冲区来进行处理。NIO的并发和BIO一样都局限在应用中。
  • AIO — 异步非阻塞IO
    服务器中的实现为一个有效请求一个线程,适用于连接数目多且长的架构,比如相册服务器。所有的IO请求都先交由操作系统处理之后,再启动线程进行处理。AIO充分调动操作系统参与并发,但是编程比较复杂,现在的应用也不是很多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值