`
guibin
  • 浏览: 366201 次
  • 性别: 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 入门

    Java NIO(New Input/Output)是Java标准库中的一部分,自Java 1.4版本引入,为开发者提供了更高效的数据处理方式。相比于传统的IO模型,NIO具有非阻塞和选择器等特性,适用于高并发、大数据量的场景。在本文中,...

    java nio入门学习,两个pdf

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统I/O模型的新技术。在Java 1.4版本中引入,NIO提供了一种全新的I/O编程方式,使得Java开发者能够更高效地处理I/O操作...

    JAVA基础教学课件

    - NIO(New Input/Output):提供非阻塞I/O操作,适用于高并发场景。 14. **网络编程** - Socket编程:创建TCP连接,实现客户端和服务器的通信。 - URL和URLConnection:访问网络资源,如HTTP请求。 15. **泛型...

    Java语言程序设计基础篇

    - NIO(New Input/Output)概述 - Channels、Buffers、Selectors的使用 12. **第十二章:Java网络编程** - Socket编程基础 - URL、URLConnection的使用 - HTTP客户端实现 13. **第十三章:Java数据库编程** ...

    unit14 网络编程概述(169).rar

    6. **NIO(非阻塞I/O)**:Java的NIO(New Input/Output)库提供了更高效的数据传输方式,特别是在高并发场景下,通过选择器(Selector)可以同时监控多个通道,提高服务器的吞吐量。 7. **异常处理**:网络编程中...

    程序设计基础(java)-邓军.rar

    12. **IO流的NIO(New Input/Output)**:Java 1.4引入的NIO提供了一种非阻塞的I/O模型,提高了I/O性能,尤其是对于网络编程。 13. **反射机制**:Java的反射机制允许在运行时动态地获取类的信息并操作类的对象,如...

    JAVA语言程序设计基础篇

    9. **IO与NIO**:New Input/Output (NIO) 是Java 1.4引入的新特性,提供了一种非阻塞I/O模型,适用于高并发场景。 10. **Java标准库**:Java SE(标准版)库提供了大量预先定义的类和方法,涵盖了数学、字符串处理...

    java知识精华

    - IO流处理输入输出,分为字节流和字符流,NIO(New Input/Output)提供了非阻塞I/O操作。 以上是Java入门所需掌握的核心知识点,理解并实践这些内容将为你的Java编程之旅打下坚实的基础。随着经验的积累,你还将...

    22

    - NIO(New Input/Output)提供了非阻塞I/O操作,适用于高并发场景。 5. **多线程**: - Thread类和Runnable接口实现多线程。 - synchronized关键字保证线程安全。 - volatile关键字确保共享变量在多线程环境中...

    java学习路线.docx

    **目标:** 掌握Java输入输出流和NIO(New Input/Output)的使用。 1. **文件IO:** - **File类:** File类提供了文件和目录路径名的抽象表示形式。学习如何创建、读取、修改文件。 - **字节流:** InputStream和...

Global site tag (gtag.js) - Google Analytics