大家都知道NIO可以提高IO效率, 但为什么NIO可以提高IO效率,以及NIO的非堵塞技术是如果实现的,相信还有很多人不甚了解,下面是我学习时找的内容,晒出来和大家分享。
原来的I/O库与NIO最重要的区别是数据打包和传输的方式的不同,原来的 I/O 以流 的方式处理数据,而 NIO 以块 的方式处理数据。
面向流的I/O系统一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数据。为流式数据创建过滤器非常容易。链接几个过滤器,以便每个过滤器只负责单个复杂处理机制的一部分,这样也是相对简单的。不利的一面是,面向流的I/O通常相当慢。
http://zhangshixi.iteye.com/blog/679959
Java NIO非堵塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。
http://www.lifevv.com/tenyo/doc/20070831141139791.html
nio的主要作用就是用来解决速度差异的。举个例子:计算机处理的速度,和用户按键盘的速度。这两者的速度相差悬殊。如果按照经典的方法:一个用户设定一个线程,专门等待用户的输入,无形中就造成了严重的资源浪费:每一个线程都需要珍贵的cpu时间片,由于速度差异造成了在这个交互线程中的cpu都用来等待。
nio套接字是怎么做到的?
其实,其中的思想很简单:轮询。一个线程轮询多个input;传统的方式是:有n个客户端就要有n个服务线程+一个监听线程,现在采取这种凡是,可以仅仅使用1个线程来代替n个服务线程以此来解决。
具体应用例子:
http://aga.iteye.com/blog/206691
分享到:
相关推荐
Java NIO与IO性能对比分析.pdf
Java NIO与IO的区别和比较,
Java_NIO与IO的区别和比较
Java NIO与IO性能对比分析
Java NIO IO 区别 比较 doc
JavaNIO与IO的区别和比较.pdf
NULL 博文链接:https://aga.iteye.com/blog/206691
NULL 博文链接:https://ilrxx.iteye.com/blog/1051402
主要介绍了Java的NIO与IO的详解及对比的相关资料,需要的朋友可以参考下
Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道...Java NIO系列教程(十二) Java NIO与IO
尚硅谷_NIO_NIO 与 IO 区别 ·02. 尚硅谷_NIO_缓冲区(Buffer)的数据存取 ·03. 尚硅谷_NIO_直接缓冲区与非直接缓冲区 ·04. 尚硅谷_NIO_通道(Channel)的原理与获取 ·05. 尚硅谷_NIO_通道的数据传输与内存映射文件 ...
nio与io的区别 Channel Buffer 事件及nio的非阻塞读取
NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题。 1. Buffer:它是包括数据且用于读写的线形表结构。当中还提供了一个特殊类用于内存映射文件的I/O操作。 2. ...
适合NIO初学者入门,讲解传统io与nio的区别,内有示列代码及说明图。
IO和NIO区别 Java 中的 IO 和 NIO 是两个不同的输入/输出机制,它们之间有许多区别。下面我们将详细讲解 IO 和 NIO 的区别。 1. 数据处理方式 标准 IO 以流的方式处理数据,也就是说数据是以流的形式传输的,而 ...
NIO和IO中文概述文档
nio和io的详细描述
JavaNIO浅析IO模型Java开发Java经验技巧共10页.pdf.zip
JavaNIO传统IO 以网络应用为例.pdf