AIO引入了异步通道的概念,采用了Proactor模式,简化了程序编写。它的特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多且连接时间比较长的应用。
Proactor模式是一个消息异步通知的设计模式,Proactor通知的部署就绪事件,而是操作完成事件。
适用场景:
BIO适用于连接数比较小且固定的架构,这种方式对服务器资源要求比较高
NIO适用于连接数目多且比较短的架构,比如聊天服务器,弹幕系统,服务期间通讯等
AIO适用于连接数多且连接比较长的架构,比如相册服务器。
NIO编程 2.1 NIO介绍Java NIO是JDK提供的新API。NIO有三个核心部分:Channel,Buffer,Selector。NIO是面向缓冲区编程的。JAVA NIO的非阻塞模式,是一个线程从某个通道发送或读取数据,仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而不是阻塞线程。
通俗理解:NIO是可以做到用一个线程来处理多个操作的。假设有1000个请求过来,根据实际情况,可以分配50或100个线程来处理。不像BIO那样,非得分配1000个线程。
NIO和BIO比较
BIO是以流的方式处理数据,而NIO是以缓冲区的方式处理数据
BIO是阻塞的,NIO是非阻塞的
BIO基于字节流和字符流操作,而NIO是基于Channel和Buffer进行操作。NIO基于Selector监听多个通道的事件。