为什么用NIO
优点:NIO以块的方式处理数据,NIO是以流(字节)方式处理。NIO将最耗时的IO操作(即填充和提取缓冲区)转移回操作统。
缺点:面向块的I/O缺少一些面向流的I/O所具有的优雅性和简单性
补充:JDK1.4以后,java.io.*已经以NIO为基础重新实现了,处理也会很快。
缓冲区Buffer
任何时候访问NIO中的数据,都是通过缓冲区来操作。本质是一个数组,提供了数据的结构化访问,
还可以跟踪系统的读写进程。
最简单的是ByteBuffer。还有其他基于Java基本类型的Buffer。例如 CharBuffer,IntBuffer...
Buffer有三个属性:
position 变量跟踪已经写了多少数据。更准确地说,它指定了下一个字节将放到数组的哪一个元素中
limit 变量表明还有多少数据需要取出(在从缓冲区写入通道时),或者还有多少空间可以放入数据(在从通道读入缓冲区时)
capacity 表明可以储存在缓冲区中的最大数据容量。实际上,它指定了底层数组的大小 — 或者至少是指定了准许我们使用的底层数组的容量
flip() ,clear()等操作都是对这些变量的改变,改变缓冲区的属性
通道Channel
通过通道,可以读取和写入数据。等价于原I/O的流。通道是连接缓冲区的纽带,对数据的操作是通过通道来处理的,通道直接操作缓冲区。
通道是双向的,这点跟流不同。
“从一个通道中读取很简单:只需创建一个缓冲区,然后让通道将数据读到这个缓冲区中。写入也相当简单:创建一个缓冲区,用数据填充它,然后让通道用这些数据来执行写入操作”
总结
NIO的精髓就是Buffer 和 Channel,明白了它们的原来细节,接下来就是熟悉API,熟练应用到你的项目中去了。在这里推荐一个很好的NIO入门材料(IBM开发社区的NIO入门),希望对您学习NIO有帮助
分享到:
相关推荐
Java NIO并非简单的输入输出API的替代,而是提供了一种新的I/O模型。传统IO基于流(Stream)进行数据读写,而NIO基于通道(Channel)和缓冲区(Buffer)。NIO的核心特点是它支持非阻塞I/O操作,可以显著提高程序的效率,...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统I/O模型的新技术。在Java 1.4版本中引入,NIO提供了一种全新的I/O编程方式,使得Java开发者能够更高效地处理I/O操作...
IBM的NIO入门教程通常会涵盖这些基础概念,并通过实例演示如何使用NIO进行实际的I/O操作。教程可能还会深入讲解NIO的高级特性,如scatter/gather(分散/聚集)读写,以及如何使用`Selector`进行多路复用。通过学习这...
java侧起server(NioUdpServer1.java),基于Java Nio的selector 阻塞等候,一个android app(NioUdpClient1文件夹)和一个java程序(UI.java)作为两个client分别向该server发数据,server收到后分别打印收到的消息...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一种I/O模型,旨在提供一种更高效、更具控制力的I/O操作方式。与传统的-blocking I/O(阻塞I/O)相比,NIO的关键在于它...
本教程旨在为读者提供一个全面的NIO入门指南,不仅涵盖了NIO的基础理论知识,还包括了实际编程中使用到的代码示例。 在学习NIO之前,读者需要掌握Java语言的一些基本概念,包括类、继承、包等。此外,如果读者对...
可以作为NIO socket入门的例子,Reactor模式,重点理解key.attach, jar文件里包含了源代码 1,运行server.bat启动服务器,可以打开编辑,修改端口号 2,运行client.bat启动客户端,可以打开编辑,ip,和端口号 3...
"Java NIO 入门教程" Java NIO(New I/O)是 Java 语言中的一种新的输入/输出机制,自 JDK 1.4 开始引入。不同于传统的面向流的 I/O,NIO 采用面向块的 I/O 方式,提供了高速的 I/O 操作。NIO 库的主要特点是使用...
[第4节] JavaNIO流-通道1.flv [第5节] Java NIO流-通道2.flv [第6节] Java NIO流-socket通道操作.flv [第7节] Java NIO流-文件通道操作.flv [第8节] Java NIO流-选择器 .flv [第9节] Java NIO流-选择器操作.flv...
**NIO(New Input/Output)是Java编程语言中用于替代标准I/O(BIO,Blocking I/O)的一组API,它提供了非阻塞式的I/O操作方式,极大地提升了Java在处理I/O密集型应用时的性能。NIO在Java 1.4版本中被引入,之后在...
javaNIO入门(良好排版格式).pdf
Java NIO的总结, 对于新人入门理解很好, 使用Markdown编写
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出...同时,NIO并不适用于所有场景,对于低并发、简单I/O操作的情况,传统的Blocking I/O可能更为合适。因此,合理选择和运用I/O模型是提升系统性能的关键。
### Java NIO 入门详解 #### 一、NIO 的背景与意义 **NIO (New Input/Output)** 是 Java 在 JDK 1.4 中引入的一个全新的输入输出库,旨在改进原有的 IO 库(主要位于 `java.io.*` 包中)的性能和功能。传统的 Java...
《IBM Java文档库 NIO 入门》这篇教程主要针对的是Java 1.4引入的New Input/Output (NIO)库,这是一个重要的更新,旨在提高Java程序的I/O性能,特别是面向块的I/O操作。NIO弥补了传统I/O(基于java.io.*包)的不足,...