NIO系列-00-4种IO对比
声明
该系列文章由书籍《Netty权威指南》第二版整理而来。只为记录学习笔记。
若认为内容侵权请及时通知本人删除相关内容。
说明
有关 BIO、NIO、AIO的理解,请看这两位仁兄的文章:
也谈BIO | NIO | AIO (Java版–转)
JAVA 中BIO,NIO,AIO的理解
另外,这里指的 “伪异步IO”指的是用了线程池的BIO模型
四种IO的对比
对比项 | 同步阻塞(BIO) | 伪异步I/O | 非阻塞(NIO) | 异步(AIO) |
---|---|---|---|---|
客户端个数(I/O)线程 | 1:1 | S:C,S可以大于C | S:1,一个IO线程可以处理多个客户端连接 | M:0 无需启动额外的线程,被动回调 |
I/O类型(阻塞) | 阻塞 | 阻塞 | 非阻塞 | 非阻塞 |
I/O类型(同步) | 同步 | 同步 | 同步 | 异步 |
API使用难度 | 简单 | 较简单 | 非常复杂 | 复杂且非常繁琐 |
调试难度 | 简单 | 简单 | 复杂 | 复杂 |
可靠性 | 非常差 | 差 | 高 | 高 |
吞吐量 | 非常低 | 中 | 高 | 高 |
后续文章
后面会以时间服务器
为例,分别使用以上4中IO模型来实现。
NIO系列-01-传统BIO
NIO系列-02-升级版BIO
NIO系列-03-NIO
NIO系列-04-AIO
参考资料: 《Netty权威指南》第二版