本文来源于:http://blog.anxpp.com/index.php/archives/895/

简介:从编程语言层面

BIO|NIO|AIO 以 Java 的角度,理解如下:
BIO,同步阻塞式 IO,简单理解:一个线程处理一个链接,发起和处理 IO 请求都是同步的
伪异步 I/O 编程,服务器端使用线程池代替 BIO 的服务器端
NIO,同步非阻塞 IO,简单理解:一个线程处理多个连接,发起 IO 请求是非阻塞的但处理 IO 请求是同步的
AIO,异步非阻塞 IO,简单理解:一个有效请求一个线程,发起和处理都是异步的

测试代码见下:

名称 代码 git 地址
BIO https://gitee.com/roclli/IO-Modle-11-BIO.git
伪异步 I/O 编程 https://gitee.com/roclli/IO-Modle-12-fake-BIO.git
NIO https://gitee.com/roclli/IO-Model-2-NIO.git
AIO https://gitee.com/roclli/IO-Model-3-AIO.git

版本粗略测试了每种模式的性能:

测试条件 CPU 情况 Memory 情况
伪异步的服务器 +BIO 的客户端 (一个服务器,线程池有2个线程,9个客户端) 基本上 8core 都在 80% 左右 13.0G/15.6G
NIO 的服务器 +BIO 的客户端 (一个服务器,9个客户端) 基本上 8core 都在 68% 左右 13.8G/15.6G
BIO 的服务器 +BIO 的客户端 (一个服务器,9个客户端) 基本上 8core 都在 60% 左右 14.4G/15.6G
AIO 的服务器 +BIO 的客户端 (一个服务器,9个客户端) 基本上 8core 都在 46% 左右 12.4G/15.6G

说明:

结论:


↙↙↙阅读原文可查看相关链接,并与作者交流