Java NIO - 快速指南

1, 简介

小池 ~ 杨万里 〔宋代〕 ~
泉眼无声惜细流,树阴照水爱晴柔。
小荷才露尖尖角,早有蜻蜓立上头。

Java.nio 包是在 java 1.4 中引入的。与 java NIO 中的 java I/O 相比,引入了面向缓冲区和通道的 I/O 操作数据流,从而提供更快的执行和更好的性能。

此外,NIO API 提供了选择器,它引入了以异步或非阻塞方式侦听 IO 事件的多个通道的功能。在 NIO 中,最耗时的 I/O 活动包括向操作系统填充和排空缓冲区,从而提高速度。

NIO API 的核心抽象如下 -

缓冲区,它是数据、字符集及其相关解码器和编码器的容器,可在字节和 Unicode 字符之间进行转换。

各种类型的通道,代表与能够执行 I/O 操作的实体的连接

选择器和选择键与可选通道一起定义了一个多路复用的非阻塞 I/O 设施。

2,图解

Java NIO 包的主要工作是基于一些核心组件。他们是:

  • 缓冲区:此包中的缓冲区可用于原始数据类型。Java NIO 是一个面向缓冲区的包。这意味着可以向/从缓冲区写入/读取数据,该缓冲区使用通道进一步处理。在这里,缓冲区充当数据的容器,因为它保存原始数据类型并提供其他 NIO 包的概述。这些缓冲区可以被填充、排空、翻转、倒带等。

  • 通道:通道是新的原始 I/O抽象。通道有点像用于与外部世界通信的流。从通道中,我们可以将数据读入缓冲区或从缓冲区写入。Java NIO 执行非阻塞 IO 操作,通道可用于这些 IO 操作。与不同实体的连接由能够执行非阻塞 I/O 操作的各种通道表示。通道用作媒介或网关。下图说明了通道和缓冲区的交互:
    在这里插入图片描述

  • 选择器:选择器可用于非阻塞 I/O 操作。选择器是一个对象,它监视事件的多个通道。由于 Java NIO 执行非阻塞 IO 操作,选择器和带有可选通道的选择键定义了多路复用 IO 操作。因此,简单来说,我们可以说选择器用于选择准备进行 I/O 操作的通道。下图说明了处理通道的选择器:
    在这里插入图片描述

Java NIO 提供了一种基于通道、缓冲区和选择器的新 I/O 模型。因此,这些模块被认为是 API 的核心。下表说明了 NIO 系统的 Java.nio 包列表以及使用它们的原因:

包裹 目的
java.nio 包 它提供了其他 NIO 包的概述。这个 NIO 系统封装了不同类型的缓冲区,这些缓冲区在整个 NIO API 中使用。
java.nio.channels 包 它支持通道和选择器,它们代表与实体的连接,实体本质上是打开 I/O 连接并选择准备好 I/O 的通道。
java.nio.channels.spi 包 它支持 java.io.channel 包的服务提供者类。
java.nio.file 包 它提供对文件的支持。
java.nio.file.spi 包 它支持 java.io.file 包的服务提供者类。
java.nio.file.attribute 包 它提供对文件属性的支持。
java.nio.charset 包 它定义了字符集并为新算法提供编码和解码操作。
java.nio.charset.spi 包 它支持 java.nio.charset 包的服务提供者类。

3, 参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值