`
guibin
  • 浏览: 363649 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java NIO 入门(一)Input/output: 概述

    博客分类:
  • Java
阅读更多
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



分享到:
评论

相关推荐

    Java NIO 英文文字版

    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详细教程,包括使用背景,实现原理,代码实现

    java nio入门学习,两个pdf

    java nio入门学习,两个pdfjava nio入门学习,两个pdf

    java nio 入门

    java nio 入门,来自于IBM中文站

    JavaNIO chm帮助文档

    Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六)...

    氮气退火对NiO/ZnO:A1薄膜PN结的影响* (2012年)

    利用磁控溅射法,在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并发编程的书籍java...

    Java NIO入门

    NIO 的创建目的是为了让 Java 程序员可以实现高速 I/O 而无需编写自定义的本机代码。NIO 将最耗时的 I/O 操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地提高速度。

    Java NIO入门的源码

    这是用于JAVA NIO入门教程的源码,直接看也能学到不少哦

    Java NIO系列教程(一) Java NIO 概述

    Java NIO系列教程(一) Java NIO 概述

    基于HTTP、NIO、多线程实现浏览器高并发非阻塞访问服务器文件

    代码经过压力测试,采用反应器模式,没有第三方框架,实现功能:可以一个线程处理多个请求,也可以加上多线程。处理数据采用的多线程。实现功能:基于HTTP协议,解析请求和拼接响应,基于NIO的非阻塞,线程池,文件...

    java 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 中文 Java NIO 中文 Java NIO 中文文档

    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英文高清原版

    Java NIO英文高清原版

    java NIO入门(中英+代码)

    java NIO入门适合入门j

    NIO 入门.chm,NIO 入门.chm

    NIO入门.chm NIO入门.chm NIO入门.chm

    Java IO, NIO and NIO.2 原版pdf by Friesen

    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 ...

    socketjava源码-demo-sockets-io-nio-nio2:“Java套接字I/O:阻塞,非阻塞和异步”文章和源代码

    socket java原始码Java套接字I ...非阻塞-套接字的一种属性,当检测到所请求的动作没有未知的延迟就无法完成时,套接字的调用将立即返回。 同步I / O操作-导致请求线程被阻塞直到该I / O操作完成的I

    java NIO 中文版

    讲解了 JavaIO 与 JAVA NIO区别,JAVA NIO设计理念,以及JDK中java NIO中语法的使用

Global site tag (gtag.js) - Google Analytics