Java应用到的IO模型
BIO:同步阻塞IO模型<br>
NIO:<br>
Java 1.4 中引入,对应 java.nio 包
提供了 Channel , Selector,Buffer 等抽象
它支持面向缓冲的,基于通道的 I/O 操作方法。 对于高负载、高并发的(网络)应用,应使用 NIO 。
Java 中的 NIO 属于同步非阻塞 IO 模型
模型
AIO
AIO 是 Java 1.7 之后引入的包
基于回调实现<br>
JDK 7 引入了Asynchronous I/O,即AIO。在进行I/O编程中,常用的2种模式:Reactor和Proactor。Java的NIO就是Reactor:当有事件触发时,服务器端得到通知,进行相应的处理。<br><br>AIO即NIO2.0,叫做异步非阻塞IO。AIO引入异步通道的概念,采用了Proactor模式,简化了程序编写,有效的请求才启动线程,它的特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多且连接时间较长的应用。<br><br>目前AIO还没有广泛应用,Netty也是基于NIO,而不是AIO。
对比
NIO适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,弹幕系统,服务器间通讯等。编程比较复杂,JDK1.4开始支持。Netty基于的是NIO。<br><br>AIO方式适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。AIO暂未得到广泛应用。
参考
https://blog.csdn.net/m0_46517444/article/details/118928565
https://www.cnblogs.com/zackstang/p/14584218.html
Netty中的IO模型
当前Netty是基于NIO模型
它的异步特征是netty通过自己的线程模型实现的,给work线程提供的异步效果