JavaSE:NIO的概念
2021/6/30 14:24:54
本文主要是介绍JavaSE:NIO的概念,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
0. IO回顾
<1> IO:Input Output ( 输入 输出 )
<2> IO技术的应用:解决设备和设备之间的数据传输问题
<3> IO应用场景:图片上传、下载、打印机打印信息表、解析XML...
1. 概念
<1> 即 Java New IO
<2> 是一个全新的、JDK 1.4后提供的 IO API
<3> Java API 中提供了两套NIO,一套是针对 标准输入输出 NIO, 另一套就是 网络编程NIO
2. 作用
<1> NIO 和 IO 有相同的作用和目的,但实现方式不同
<2> 可替代标准 Java IO 的 IO API
<3> IO 是以流的方式处理数据,而NIO是以块的方式处理数据
3. 流与块的比较
<1> NIO 和 IO 最大的区别是数据打包 和 传输方式
<2> IO是以流的方式处理数据,而NIO是以块的方式处理数据
面向流的IO一次一个字节的处理数据,一个输入流产生一个字节,一个输出流就消费一个字节
面向块的IO系统以块的形式处理数据。每一个操作都在一步中,产生或消费一个数据块。 按快要比按流快得多
举例: 拿水龙头来比喻,流就像水龙头滴水,每次只有一滴
块就像水龙头往水壶放水,放满之后对一整个水壶的水进行操作
4. 新特性
对比于 Java IO, NIO具备的新特性如下:
IO | NIO |
面向流(Stream Oriented) | 面向缓冲区(Buffer Oriented) |
阻塞IO(Blocking IO) | 非阻塞IO (Non Blocking IO) |
(无) | 选择器(Selectors) |
可简单认为: IO是面向流的处理,NIO是面向块(缓冲区)的处理
面向流的 I/O 系统:一次一个字节地处理数据
一个面向块(缓冲区)的I/O系统:以块的形式处理数据
5. 核心组件
Java NIO 的核心组件包括:
<1> 通道 (Channel)
<2> 缓冲区 (Buffer)
<3> 选择器 (Selector)
在NIO中,并不是以流的方式来处理数据的,而是以buffer缓冲区 和 Channel管道配合使用 来处理数据
Selector是因为NIO可以使用异步的非阻塞模式才加入的东西
简单理解一下:
<1> Channel 管道比作铁路, buffer 缓冲区比作成火车(运载着货物)
而我们的NIO,就是通过Channel管道,运输着储存数据的 Buffer 缓冲区 来实现数据的处理
<2> 要时刻记住: Channel 不与数据打交道,它只负责运输数据。 与数据打交道的是 Buffer 缓冲区
Channel ----> 运输
Buffer ----> 数据
<3> 相对于传统IO而言, 流是单向的。
对于NIO而言,有了Channel管道这个概念,我们的读写都是双向的
(铁路上的火车能从广州去北京,自然就能从北京返还到广州)
这篇关于JavaSE:NIO的概念的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)