Java NIO(1) 基本组件简介

Java NIO

1. Java NIO 基本组件介绍

2. Java NIO 核心组件:Buffer 缓冲器

3. Java NIO 核心组件:Channel 通道

4. Java NIO 核心组件:Selector 选择器,Pipe 管道


Java NIO 简介


Java 除了提供标准 I/O 系统之外,在 Java 1.4 开始提供了 NIO 系统用于提供 基于缓存的、非阻塞的、高速 I/O 操作 ,提供 NIO 系统的目的在于提高 I/O 操作的速度,使用更加类似于操作系统执行 I/O 的方式,即使用了 通道和缓冲器;

NIO 和 标准 IO 的区别
标准IO
  • 基于阻塞的 I/O 操作在等待数据写入或写入都会引起阻塞,即当线程调用 write(), read() 时,线程会被阻塞,直到数据被完全读取或写入;
  • 面向流:使用流来传输数据,这种方式的 I/O 操作速度比较慢;
NIO
  • 基于非阻塞的 I/O 操作:不等待数据的读取或写入,允许调用线程请求向通道写入数据,而不等待数据被完全写入;
  • 面向缓存:使用通道(channel)和缓冲区(buffer)来传输数据,数据被读取入缓冲区,使用通道进一步进行处理;

Java NIO 系统的核心组件
Java NIO 系统的核心组件包括以下
  • 通道和缓冲区(Channel and Buffer):NIO 使用通道和缓冲区传输数据,数据总是从缓冲区写入通道,并从通道读取到缓冲区;
  • 选择器(Selectors):NIO 的选择器用于监视多个通道的状态(如数据到达,连接打开等),通过选择器,单线程可以监视多个通道中的数据;


NIO 核心 Channel 
  • FileChannel:用于文件 I/O
  • SocketChannel ,ServerChannel:用于 TCP I/O
  • DatagramChannel:用于 UDP I/O

NIO 核心 Buffer
  • CharBuffer
  • DoubleBuffer
  • IntBuffer
  • LongBuffer
  • ByteBuffer
  • ShortBuffer
  • FloatBuffer
以上 Buffer 分别用于对各种基本数据类型进行支持;

java.nio 包基本结构
java.nio 提供了对于 NIO 系统支持的类库,该包的主要结构如下:
java.nio NIO系统的顶级包,NIO系统封装了各种类型的缓冲区;
java.nio.charset 封装了字符集,并且还支持分别将字符转换为字节和字节到编码器和解码器的操作;
java.nio.charset.spi 用于提供字符集服务;
java.nio.channels 用于支持通道,这些通道本质上是打开I/O连接;
java.nio.channels.spi 用于支持频道服务;
java.nio.file 用于提供对文件的支持;
java.nio.file.spi 用于提供支持文件系统的辅助服务;
java.nio.file.attribute 用于对文件属性提供的支持






  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值