Java NIO 入门(一)Input/output: 概述
guibin.beijing@gmail.com
I/O介绍
I/O即输入输出,指的是计算机和世界其他部分的接口,或者是单个程序同计算机其他部分的接口。I/O是计算机系统中的重要元素,并且大量的I/O实际上已经内建到操作系统中了。单独的程序通常都有很多I/O方面的工作要做。
在JAVA中,老的I/O是以“流/Stream”为基础概念,即所有的I/O都一个个单个字节的流动。在字节流中,每次一个字节,依次通过一个叫做Stream的对象。Stream I/O联系着计算机和外面的世界。Stream I/O也用在计算机内部,比如把一个对象转换成bytes或者把bytes反序列化成对象。
NIO具有和原来的老I/O相同作用和目的,但是
NIO却使用了一个不同的概念--block I/O(块I/O)。在本文后面会讲到,NIO会比老的基于流的I/O更高效。
为什么使用NIO?
创建NIO的初衷是为了让JAVA开发人员在不直接使用底层本地代码的情况下实现高速的I/O操作。
NIO的高效归结与它把那些耗时的I/O操作(比如读数据进入buffer,或者将buffer中的数据写入外部设备)
都推给了操作系统,因此获得了很高的性能。
Streams VS blocks(流和块的比较)
老I/O和NIO之间最重要的区别在于他们不同的数据打包与传输方式。就像之前提到的,老I/O以“流”的方式处理数据,而NIO以“块”的方式处理数据。
面向流的IO系统每次处理一个字节,输入流(input stream)每生产一个字节,输出流(output stream)就消费一个字节。这种工作模式下,非常容易给流数据创建过滤器(filters),而且也很容易将多个过滤器串起来,每个过滤器针对流过自己的字节做相应处理。另一方面,在这种工作模式下面向流的IO通常很慢。
面向块的IO系统以块为单位处理数据。每个操作都会生产/消费一“块”数据,以块为单位处理数据会比以字节(流)为单位处理数据快很多。但是面向块的IO系统同时也损失了一些优雅而简单的操作方式。
本文参考自
http://www.cs.brown.edu/courses/cs161/papers/j-nio-ltr.pdf
分享到:
相关推荐
Many serious Java programmers, especially enterprise Java programmers, consider the new I/O API--called NIO for New Input/Output--the most important feature in the 1.4 version of the Java 2 Standard ...
java NIO详细教程,包括使用背景,实现原理,代码实现
java nio入门学习,两个pdfjava nio入门学习,两个pdf
java nio 入门,来自于IBM中文站
Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六)...
利用磁控溅射法,在ITO玻璃基底上沉积NiO薄膜和ZnO:Al(Al掺杂的ZnO或AZO)薄膜,制备具有半导体特性的NiO/ZnO:A1透明异质结二极管。使用UV-1700型分光光度计、KEITHLEY4200-SCS半导体测试仪、JSM-6490LV型扫描电子...
java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java...
NIO 的创建目的是为了让 Java 程序员可以实现高速 I/O 而无需编写自定义的本机代码。NIO 将最耗时的 I/O 操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地提高速度。
这是用于JAVA NIO入门教程的源码,直接看也能学到不少哦
Java NIO系列教程(一) Java NIO 概述
代码经过压力测试,采用反应器模式,没有第三方框架,实现功能:可以一个线程处理多个请求,也可以加上多线程。处理数据采用的多线程。实现功能:基于HTTP协议,解析请求和拼接响应,基于NIO的非阻塞,线程池,文件...
Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。 Java NIO: Channels and Buffers(通道和缓冲区) 标准的IO基于字节流和字符流进行操作的,...
Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的 Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了 如何才能充分利用新的 I/O ...
Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据...
Java NIO英文高清原版
java NIO入门适合入门j
NIO入门.chm NIO入门.chm NIO入门.chm
Input/output (I/O) is not a sexy subject, but it’s an important part of non-trivial applications. This book introduces you to most of Java’s I/O capabilities as of Java 8 update 51. Chapter 1 ...
socket java原始码Java套接字I ...非阻塞-套接字的一种属性,当检测到所请求的动作没有未知的延迟就无法完成时,套接字的调用将立即返回。 同步I / O操作-导致请求线程被阻塞直到该I / O操作完成的I
讲解了 JavaIO 与 JAVA NIO区别,JAVA NIO设计理念,以及JDK中java NIO中语法的使用