1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-20 22:17:09 +08:00

reformat content in io.md

Signed-off-by: sam <sam2008ext@gmail.com>
This commit is contained in:
sam 2022-02-22 04:09:24 +08:00
parent 13b950686d
commit 548245e669

View File

@ -73,7 +73,7 @@ UNIX 系统下, IO 模型一共有 5 种: **同步阻塞 I/O**、**同步非
### NIO (Non-blocking/New I/O)
Java 中的 NIO 于 Java 1.4 中引入,对应 `java.nio` 包,提供了 `Channel` , `Selector``Buffer` 等抽象。NIO 中的 N 可以理解为 Non-blocking不单纯是 New。它支持面向缓冲的基于通道的 I/O 操作方法。 对于高负载、高并发的(网络)应用,应使用 NIO 。
Java 中的 NIO 于 Java 1.4 中引入,对应 `java.nio` 包,提供了 `Channel` , `Selector``Buffer` 等抽象。NIO 中的 N 可以理解为 Non-blocking不单纯是 New。它支持面向缓冲的,基于通道的 I/O 操作方法。 对于高负载、高并发的(网络)应用,应使用 NIO 。
Java 中的 NIO 可以看作是 **I/O 多路复用模型**。也有很多人认为Java 中的 NIO 属于同步非阻塞 IO 模型。
@ -95,7 +95,7 @@ Java 中的 NIO 可以看作是 **I/O 多路复用模型**。也有很多人认
IO 多路复用模型中,线程首先发起 select 调用,询问内核数据是否准备就绪,等内核把数据准备好了,用户线程再发起 read 调用。read 调用的过程(数据从内核空间 -> 用户空间)还是阻塞的。
> 目前支持 IO 多路复用的系统调用,有 selectepoll 等等。select 系统调用,目前几乎在所有的操作系统上都有支持
> 目前支持 IO 多路复用的系统调用,有 selectepoll 等等。select 系统调用,目前几乎在所有的操作系统上都有支持
>
> - **select 调用** :内核提供的系统调用,它支持一次查询多个系统调用的可用状态。几乎所有的操作系统都支持。
> - **epoll 调用** linux 2.6 内核,属于 select 调用的增强版本,优化了 IO 的执行效率。