如何理解NIO的性能提升?

徐建兴 发布于 2013/11/03 21:02
阅读 602
收藏 0
NIO 可以让 java 程序员在和传统的 native 编码方式不同的方式下 , 实现高性能的输入 / 输出效果 ,NIO 把大多数消耗时间的 I/O 操作( namely,filling,draining buffer )的行为交给操作系统 , 所以性能上相比有了很大提升,如何理解NIO把大多数消耗时间的I/O操作(namely,filling,draining buffer)的行为交给操作系统这句话呢?
加载中
0
黑狗
黑狗

NIO是observer 和以前不一样,以前你控制IO,你必须手动的控制他的read线程。合适挂起,合适打开,合适关闭,等等等等。

也就是说,以前,很多代码都是你去实现的,他现在给你封装好了,然后,他凭自己牛逼的技术,可以完爆绝大多数其他码农。换个方式说,“我写得比你们好,你们直接用我的,性能就上升了”

0
梅开源
梅开源
你当了操作系统的领导
0
黑狗
黑狗
BTW,NIO和IO都有其使用场景,别一味用NIO,NIO你在很多情况下会出错的
0
IdleMan
IdleMan

不是说?:

1.nio是内核态到用户进程方式

2.非阻塞等待

黑狗
黑狗
去oracle上看看nio详细的文档就知道了
0
z
zoso

实际上是有了底层操作系统的支持,以前一个SOCKET需要一个线程来支撑,这种模式是不合理的.

NIO就是有一个底层线程在SELECT,遇到了各种读写事件就会通知你,因此相对以前来说,这种方式是异步,也就是说一个线程可以处理多个连接.

在实际场景中,写出漂亮的NIO代码比BIO要难很多.如果实在需要还是推荐用成熟的框架,NETTY,MINA等等

0
逝水fox
逝水fox
Java的nio包的意思是new IO,非阻塞io与直接缓冲区都只是其中的一部分。如果不使用这些光是buffer和channel,其实和老的使用IO流的方式没什么本质区别
返回顶部
顶部