Java NIO和IO的区别

 我来答
拱傅香辜秋
2020-04-12 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:32%
帮助的人:650万
展开全部
Java
NIO和IO的主要区别如下:
1.NIO
的创建目的是为了让
Java
程序员可以实现高速
I/O
而无需编写自定义的本机代码。NIO
将最耗时的
I/O
操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地提高速度。传统的IO操作属于阻塞型,严重影响程序的运行速度。
2,。流与块的比较。原来的
I/O
库(在
java.io.*中)

NIO
最重要的区别是数据打包和传输的方式。正如前面提到的,原来的
I/O
以流的方式处理数据,而
NIO
以块的方式处理数据。
面向流

I/O
系统一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数据。为流式数据创建过滤器非常容易。链接几个过滤器,以便每个过滤器只负责单个复杂处理机制的一部分,这样也是相对简单的。不利的一面是,面向流的
I/O
通常相当慢。
3.一个
面向块

I/O
系统以块的形式处理数据。每一个操作都在一步中产生或者消费一个数据块。按块处理数据比按(流式的)字节处理数据要快得多。但是面向块的
I/O
缺少一些面向流的
I/O
所具有的优雅性和简单性。
曾杨氏汝雁
2020-04-14 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:32%
帮助的人:926万
展开全部
NIO是new
IO,是IO的升级版。
  传统的socket
IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。
  使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。
  由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。
参考:csdn博客
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式