Java NIO 为什么比IO快

本文探讨了Java NIO相较于传统IO的优势,包括基于块而非流的读取方式、支持非阻塞和异步IO、多路复用能力、Buffer机制以及Direct Memory的使用等,这些特性共同提升了NIO的效率。

Java NIO 为什么比IO快


  1. NIO 参考
  2. 原因描述

NIO 参考:
1. http://blog.youkuaiyun.com/shimiso/article/details/24990499
2. http://www.iteye.com/topic/834447

原因:
1. IO 是基于流来读取的,而NIO则是基于块读取,面向流 的 I/O 系统一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数据。为流式数据创建过滤器非常容易。链接几个过滤器,以便每个过滤器只负责单个复杂处理机制的一部分,这样也是相对简单的。不利的一面是,面向流的 I/O 通常相当慢。
一个 面向块 的 I/O 系统以块的形式处理数据。每一个操作都在一步中产生或者消费一个数据块。按块处理数据比按(流式的)字节处理数据要快得多。但是面向块的 I/O 缺少一些面向流的 I/O 所具有的优雅性和简单性。
2. 非阻塞IO 和 异步IO的支持, 减少线程占有的栈空间,以及上下文切换
3. IO 多路复用的支持
4. Buffer 支持,所有读写操作都是基于 缓冲 来实现
5. NIO 支持 Direct Memory, 可以减少一次数据拷贝
6. Netty 零拷贝的支持


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值