设为首页 加入收藏

TOP

2.5.2 不同I/O模型对比
2014-07-09 13:01:13 来源: 作者: 【 】 浏览:140
Tags:2.5.2 不同 I/O 模型 对比

2.5.2  不同I/O模型对比

不同的I/O模型由于线程模型、API等差别很大,所以用法的差异也非常大。由于之前的几个小节已经集中对这几种I/O的API和用法进行了说明,本小节会重点对这几种I/O进行功能对比。如表2-1所示。

表2-1  几种I/O模型的功能和特性对比

同步阻塞I/OBIO

伪异步I/O

非阻塞I/ONIO

异步I/OAIO

客户端个数:I/O线程

11

MN(其中M可以大于N

M11I/O线程处理多个客户端连接)

M0(不需要启动额外的I/O线程,被动回调)

I/O类型(阻塞)

阻塞I/O

阻塞I/O

非阻塞I/O

非阻塞I/O

I/O类型(同步)

同步I/O

同步I/O

同步I/OI/O多路复用)

异步I/O

API使用难度

简单

简单

非常复杂

复杂

调试难度

简单

简单

复杂

复杂

可靠性

非常差

吞吐量

尽管本书是专门介绍NIO框架Netty的,但是,并不意味着所有的Java网络编程都必须要选择NIO和Netty,具体选择什么样的I/O模型或者NIO框架,完全基于业务的实际应用场景和性能诉求,如果客户端并发连接数不多,周边对接的网元不多,服务器的负载也不重,那就完全没必要选择NIO做服务端;如果是相反情况,那就要考虑选择合适的NIO框架进行开发。

对比完Java的几种主流I/O模型之后,我们继续看下为什么要选择Netty进行NIO开发,而不是直接使用JDK的NIO原生类库。
 

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.5.1 概念澄清 下一篇2.6 选择Netty的理由

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)
·C语言指针的定义和使 (2025-12-26 05:21:31)
·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)