http://www.blogjava.net/19851985lili/articles/93524.html
NIO
详解:
NIO主要包括两个部分:java.nio.channels包介绍Selector和Channel抽象,java.nio包介绍Buffer抽象。
http://www.cnblogs.com/phoebus0501/archive/2010/12/05/1897245.html
4) Selector小结
总的来说,使用Selector的步骤如下:
1、 创建一个Selector实例。
2、 将其注册到各种信道,指定每个信道上感兴趣的I/O操作。
3、 重复执行:
1) 调用一种select方法
2) 获取选取的键列表
3) 对于已选键集中的每个键。
a. 获取信道,并从键中获取附件(如果合适的话)
b. 确定准备就绪的操作并执行。如果是accept操作,将接受的信道设置为非阻塞模式,并将其与选择器注册。
c. 如果需要,修改键的兴趣操作集
d. 从已选键中移除键
如果选择器告诉了你什么时候I/O操作准备就绪,你还需要非阻塞I/O吗?答案是肯定的。信道在已选键集中的键并不能确保非阻塞I/O,因为调用了
select()方法后,键集信息可能会过时。另外,阻塞式写操作会阻塞等待直到写完所有字节,而就绪集中的OP_WRITE仅表示至少有一个字节可写。
实际上,只是非阻塞模式的信道才能与选择器进行注册:如果信道在阻塞模式,SelectableChannel类的register()方法将抛出
IllegalBlockingModeException异常。
分享到:
相关推荐
Java NIO(New Input/Output)API是在JDK 1.4版本中引入的一个重要的改进,它是对传统Java IO API的补充,旨在提供更高效、更灵活的数据输入和输出方式,特别是对于高并发和高性能的应用场景,如服务器端程序。NIO的...
值得注意的是,Java NIO API 是对旧版 I/O API 的补充而非替代。这意味着开发者需要了解何时使用新 API,何时使用旧版 API。本书也会对此进行详细解释,帮助开发者根据特定应用场景选择最适合的方案。 ### Java NIO...
标题中的“java nio服务器”指的是使用Java NIO API构建的网络服务器,这种服务器设计模式通常被称为多路复用或非阻塞I/O服务器。NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。下面...
Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的 Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了 如何才能充分利用新的 I/O ...
### Java NIO API详解 #### 一、引言 在Java早期版本中,I/O操作主要依赖于`java.io`包中的流式API,这些API虽然简单易用,但其本质是阻塞式的,这意味着每次读写操作都会等待直至完成。这种机制在处理大量并发...
Java NIO(New Input/Output),即新输入输出,是Java 1.4版本引入的一个新的API,它提供了与传统Java IO不同的操作方式。Java NIO的主要组成部分包括Buffer、Channel、Selector等,这些组件为开发者提供了更加高效...
Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。 Java NIO: Channels and Buffers(通道和缓冲区) 标准的IO基于字节流和字符流进行操作的,...
Netty利用NIO的特性,提供了高度优化的API,使得开发者可以轻松地构建高效、可靠的网络服务。Netty的事件驱动架构支持零拷贝、异步非阻塞I/O,以及丰富的协议栈,如HTTP、WebSocket、FTP等。 总的来说,Java NIO是...
在Java 1.4中引入的NIO(New I/O)API,通过支持非阻塞式的I/O操作,为开发高性能的网络应用程序提供了有力的支持。本文旨在深入探讨Java NIO与传统IO的区别和比较,以及如何利用NIO开发出更高效的网络应用。 #### ...
Java NIO(New IO)是Java平台上的新输入/输出流API,它提供了与传统IO(即Java IO)不同的数据处理方式。NIO在Java 1.4版本引入,并在后续版本中得到了进一步增强和完善。相较于传统的Java IO,NIO具有更高的性能和...
`io`标签代表传统的Java I/O API,而`nio`标签则代表了Java的新一代I/O API,这两个API在不同场景下各有优势。 **Java IO API** Java IO API自Java 1.0起就存在,主要由`java.io`包中的类组成,如`File`, `...
### Java NIO_API详解:构建高性能I/O操作的基石 #### 概述 在Java的早期版本中,I/O操作主要依赖于`java.io`包提供的流式、同步的API,这种模型对于多数应用场景而言已经足够高效且易于使用。然而,随着对性能...
Java NIO,全称为New Input/Output,是Java 1.4版本引入的重要特性,针对传统的I/O(IO)API进行了重大改进,特别是在性能、可扩展性和效率方面。NIO包包含了众多之前Java版本中缺失的功能,对于编写高性能、大规模...
5. **文件系统API**:NIO还提供了`java.nio.file`包,包含一系列与文件系统交互的类,如Files、Paths等。 Java NIO的主要优势在于非阻塞特性。在BIO中,如果一个线程正在读取或写入数据,那么这个线程将被阻塞,...