BIO、NIO、AIO 的区别

发布时间:2024年01月19日

Java面试题?

BIO

阻塞IO。采用 BIO 通信模型的服务端,通常由一个独立的 Acceptor 线程负责监听所有客户端的连接,当服务端接受到多个客户端的请求时,所有的客户端只能排队等待服务端一个一个的处理。缺点:I/O 传输性能一般比较差,CPU 大部分处于空闲状态

NIO

同步非阻塞IO。NIO 包含?Channel(通道)、Selector(选择器)、Buffer?(缓冲区)三个核心组件。NIO是面向缓冲区的,所有的数据都是在Buffer?缓冲区里。Channel是一个通道,可以通过他读取或写入数据,通道和流的不同是,通道是双向的,而流只能朝着一个方向移动。Selector选择器可以监听多个Channel通道,如此实现单线程管理多个网络连接,节省线程切换的资源消耗。

使用案例:Jetty、Dubbo、Zookeeper等都是基于NIO实现。

AIO

异步非阻塞IO。AIO基于Proactor模型实现,数据传入Buffer缓冲区时,不需要等待,数据写入Buffer后由操作系统回调你的接口。

文章来源:https://blog.csdn.net/liguo886/article/details/135678475
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。