Java中nio与普通io有什么优势?

Java中nio与普通io有什么优势?都说传统io是面向流的,nio是面向缓冲区的,但是io流不是有高效的包装类吗?为什么要来个nio,还鼓吹nio是面向缓冲区的,面向缓... Java中nio与普通io有什么优势?都说传统io是面向流的,nio是面向缓冲区的,但是io流不是有高效的包装类吗?为什么要来个nio,还鼓吹nio是面向缓冲区的,面向缓冲区与面向流相比不是以空间换时间吗? 展开
 我来答
帐号已注销
2018-01-04 · TA获得超过4639个赞
知道小有建树答主
回答量:20
采纳率:100%
帮助的人:2806
展开全部

1,nio的主要作用就是用来解决速度差异的。举个例子:计算机处理的速度,和用户按键盘的速度,这两者的速度相差悬殊。

2,如果按照经典的方法:一个用户设定一个线程,专门等待用户的输入,无形中就造成了严重的资源浪费,每一个线程都需要珍贵的cpu时间片,由于速度差异造成了在这个交互线程中的cpu都用来等待。

3,传统的阻塞式IO,每个连接必须要开一个线程来处理,并且没处理完线程不能退出。 

4,非阻塞式IO,由于基于反应器模式,用于事件多路分离和分派的体系结构模式,所以可以利用线程池来处理。事件来了就处理,处理完了就把线程归还。

5,而传统阻塞方式不能使用线程池来处理,假设当前有10000个连接,非阻塞方式可能用1000个线程的线程池就搞定了,而传统阻塞方式就需要开10000个来处理。如果连接数较多将会出现资源不足的情况。非阻塞的核心优势就在这里。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式