From 7624c661ceeb06f83670f3172ea08ce3ccb232a2 Mon Sep 17 00:00:00 2001 From: seaflower <1204378021@qq.com> Date: Sun, 13 Jul 2025 18:36:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E4=BA=8E=E5=90=8C=E6=AD=A5=E9=9D=9E?= =?UTF-8?q?=E9=98=BB=E5=A1=9E=20IO=20=E5=A2=9E=E5=8A=A0=E4=B8=80=E7=82=B9?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/java/io/io-model.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/java/io/io-model.md b/docs/java/io/io-model.md index e6d48bc0..127e57cd 100644 --- a/docs/java/io/io-model.md +++ b/docs/java/io/io-model.md @@ -87,6 +87,9 @@ Java 中的 NIO 可以看作是 **I/O 多路复用模型**。也有很多人认 相比于同步阻塞 IO 模型,同步非阻塞 IO 模型确实有了很大改进。通过轮询操作,避免了一直阻塞。 +> 同步非阻塞 IO,发起一个 read 调用,如果数据没有准备好,这个时候应用程序可以不阻塞等待,而是切换去做一些小的计算任务,然后很快回来继续发起 read 调用,也就是轮询。这个 +> 轮询不是持续不断发起的,会有间隙, 这个间隙的利用就是同步非阻塞 IO 比同步阻塞 IO 高效的地方。 + 但是,这种 IO 模型同样存在问题:**应用程序不断进行 I/O 系统调用轮询数据是否已经准备好的过程是十分消耗 CPU 资源的。** 这个时候,**I/O 多路复用模型** 就上场了。