跳到主要内容

11、Netty 源码解析 - Java AIO

一、基本介绍

1、JDK7 引入了 Asynchronous I/O,即 AIO。在进行 I/O 编程中,常用到两种模式:Reactor和Proactor。Java的NIO就是Reactor,当有事件触发时,服务器端得到通知,进行相应的处理。
2、AIO即NIO2.0,叫做异步不阻塞的IO。AIO引入异步通道的概念,采用了Proactor模式,简化了程序编写,有效的请求才启动线程,它的特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多且连接时间较长的应用
3、目前AIO还没有广泛应用,Netty也是基于NIO,而不是AIO,可以参考《java新一代网络编程模型AIO原理及Linux系统AIO介绍》

二、BIO、NIO、AIO对比表

BIO NIO AIO
IO模型 同步阻塞 同步非阻塞(多路复用) 异非阻塞
编程难度 简单 复杂 复杂
可靠性
吞吐量

举例说明:
1、同步阻塞:到理发店理发,就一直等理发师,直到轮到自己理发
2、同步非阻塞:到理发店理发,发现前面有其他人理发,给理发师说下,先干其他事情,一会过来看是否轮到自己
3、异步非阻塞:给理发师打电话,让理发师上门服务,自己干其他事情,理发师自己来家给你理发。