NIO提供了一个全新的底层的I/O层模型。与最初的java.io包中面向留(Stream-oriented)的概念不同,NIO采用了面向块的概念(block-oriented)。这意味着尽可能的情况下,I/O操作以大的数据块为单位进行,而不是一次一个字节或字符进行
NIO中提供了与平台无光的非阻塞I/O(nonblocking I/O)。与面向线程的、阻塞式I/O方式相比,多道通信、非阻塞I/O技术可以使应用程序更有效地处理大量连接的情况
IO的阻塞操作
在传统I/O操作中接收键盘数据的操作时只要执行到readLine()方法,程序就要停止等待用户输入数据;在网络编程中服务器端使用ServerSocket类的accept()方法时,服务器一直处于等待操作,要等待客户端连接。这两类都属于阻塞操作,因为都会让程序暂停执行
在基本IO操作中所有操作都是直接已流的形式完成的,而在NIO中所有的操作都要使用缓存区处理,且所有的读写操作都是通过缓存区完成的。缓存区(Buffer)是一个线性的、有序的数据集,只能容纳某种特定的数据类型
通道 Channel
通道可以用来读取和写入数据,通道类似之前的输入/输出流,但是程序不会直接操作通道,所有的内容都是先读到或写入缓冲区中,在通过缓冲区中取得或写入
通道与传统的流操作不同,传统的流操作分为输入或输出流,而通道本身是双向操作的,既可以完成输入也可以完成输出
图: 通道的操作流程
Selector
在新IO中Selector是一个极其重要的概念,在原来使用IO和Socket构造网络服务时,所有的网络服务将使用阻塞的方式进行客户端的连接,而如果使用了新IO则可以构造一个非阻塞的网络服务
相关推荐
Java NIO(New IO)是Java 1.4版本引入的一个新模块,全称为Non-blocking Input/Output,它提供了一种不同于传统IO的编程模型,传统IO基于块I/O(Blocking I/O),而NIO则基于通道(Channels)和缓冲区(Buffers)...
Java NIO,全称为Non-Blocking Input/Output,即非阻塞I/O,是Java从1.4版本开始引入的一种I/O模型,旨在提供一种更高效的数据读写方式,尤其适用于处理大量并发连接的情况。传统的Java IO基于BIO( Blocking I/O)...
### Java NIO 处理超大数据文件的知识点详解 #### 一、Java NIO简介 Java NIO(New IO)是Java平台上的新输入/输出流API,它提供了与传统IO(即Java IO)不同的数据处理方式。NIO在Java 1.4版本引入,并在后续版本...
JAVA NIO技术详解,如何实现IO异步,提升IO性能
### Java NIO 系列教程(一):Java NIO 概述 #### 一、引言 Java NIO(New IO)是Java SE 1.4版本引入的一个新的I/O处理框架,它提供了比传统Java IO包更高效的数据处理方式。NIO的核心在于其三大组件:Channels...
### Java NIO 实现Socket通信详解 #### 一、NIO与传统IO的区别及优势 在探讨如何使用Java NIO实现Socket通信之前,我们需要先理解NIO(Non-blocking I/O,非阻塞I/O)与传统阻塞I/O之间的区别。 **传统阻塞I/O...
05-Java NIO-Channel-FileChannel详解(一).mp4 06-Java NIO-Channel-FileChannel详解(二).mp4 08-Java NIO-Channel-ServerSocketChannel.mp4 09-Java NIO-Channel-SocketChannel.mp4 10-Java NIO-Channel-...
Java NIO,全称New Input/Output,是Java标准库在JDK 1.4版本引入的一个重要特性,旨在提供一种高效、面向块的I/O模型,以替代传统的基于流的I/O。NIO库的设计目标是允许Java程序员实现高性能的I/O操作,而无需依赖...
### Java NIO 详解 #### 一、引言与背景 在Java开发中,网络通信是必不可少的一部分。传统的Java I/O(通常称为BIO或Blocking I/O)在处理大量并发连接时存在一定的性能瓶颈。为了解决这些问题,在JDK 1.4中引入了...
### Java NIO 相关知识点详解 #### Java NIO 概述 Java NIO(New IO)是从 Java 1.4 版本开始引入的一种新的 I/O 处理方式,它提供了一种不同于传统 Java IO 的操作模式。NIO 的核心组件包括 Channel(通道)、...
### Java NIO 系列教程知识点详解 #### Java NIO 概述 Java NIO (New IO) 是从 Java 1.4 开始提供的一种新的 I/O 处理方式,旨在改进传统 Java IO API 的性能并引入更高效的数据处理机制。Java NIO 主要包括三大...
### JAVA IO-NIO 详解 #### 一、IO与NIO概述 在Java开发中,输入/输出(IO)操作是程序与外部环境交互的重要环节。通过IO操作,程序可以读取外部数据或向外部环境输出数据。Java的IO体系自Java 1.0以来就一直存在...
### Java NIO 原理与使用详解 #### 一、Java NIO 概述 在深入了解 Java NIO 的工作原理及其使用之前,我们首先来了解一下什么是 Java NIO(New I/O)。Java NIO 是 Java SE 1.4 版本引入的一个全新的 I/O API,...
### Java NIO与ByteBuffer详解 #### 一、Java NIO简介 Java NIO(New I/O)是Java SE 1.4版本引入的一种新的I/O处理方式,它提供了与传统BIO(Blocking I/O)不同的数据处理机制。NIO的核心组件包括`Channels`、`...
### Java NIO_API详解:构建高性能I/O操作的基石 #### 概述 在Java的早期版本中,I/O操作主要依赖于`java.io`包提供的流式、同步的API,这种模型对于多数应用场景而言已经足够高效且易于使用。然而,随着对性能...
### Java-NIO2教程知识点详解 #### I/O发展简史 - **JDK1.0-1.3**: 在此期间,Java的I/O模型主要依赖于传统的阻塞I/O方式,这种模式下,应用程序在等待I/O操作完成时无法执行其他任务,导致效率低下。此外,当时的...
Java NIO实战之聊天室功能详解 Java NIO实战之聊天室功能详解主要介绍了Java NIO实战之聊天...Java NIO实战之聊天室功能详解为开发者提供了一个很好的Java NIO实战示例,能够帮助开发者更好地理解和掌握Java NIO技术。
### Java NIO 详解 #### 一、基本概念 在深入了解Java NIO(New IO)之前,我们需要先明确几个基础概念: - **IO (Input/Output)**:输入输出操作是计算机系统与外部设备(如硬盘、键盘、网络等)之间交换数据的...