本文来源于:http://blog.anxpp.com/index.php/archives/895/
BIO|NIO|AIO 以 Java 的角度,理解如下:
BIO,同步阻塞式 IO,简单理解:一个线程处理一个链接,发起和处理 IO 请求都是同步的
伪异步 I/O 编程,服务器端使用线程池代替 BIO 的服务器端
NIO,同步非阻塞 IO,简单理解:一个线程处理多个连接,发起 IO 请求是非阻塞的但处理 IO 请求是同步的
AIO,异步非阻塞 IO,简单理解:一个有效请求一个线程,发起和处理都是异步的
测试条件 | 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 |
说明:
结论: