Java中nio与普通io有什么优势?
Java中nio与普通io有什么优势?都说传统io是面向流的,nio是面向缓冲区的,但是io流不是有高效的包装类吗?为什么要来个nio,还鼓吹nio是面向缓冲区的,面向缓...
Java中nio与普通io有什么优势?都说传统io是面向流的,nio是面向缓冲区的,但是io流不是有高效的包装类吗?为什么要来个nio,还鼓吹nio是面向缓冲区的,面向缓冲区与面向流相比不是以空间换时间吗?
展开
展开全部
1,nio的主要作用就是用来解决速度差异的。举个例子:计算机处理的速度,和用户按键盘的速度,这两者的速度相差悬殊。
2,如果按照经典的方法:一个用户设定一个线程,专门等待用户的输入,无形中就造成了严重的资源浪费,每一个线程都需要珍贵的cpu时间片,由于速度差异造成了在这个交互线程中的cpu都用来等待。
3,传统的阻塞式IO,每个连接必须要开一个线程来处理,并且没处理完线程不能退出。
4,非阻塞式IO,由于基于反应器模式,用于事件多路分离和分派的体系结构模式,所以可以利用线程池来处理。事件来了就处理,处理完了就把线程归还。
5,而传统阻塞方式不能使用线程池来处理,假设当前有10000个连接,非阻塞方式可能用1000个线程的线程池就搞定了,而传统阻塞方式就需要开10000个来处理。如果连接数较多将会出现资源不足的情况。非阻塞的核心优势就在这里。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询