同步阻塞 IO
同步阻塞 IO
程序员朱永胜有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java 面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.com/chapterDetail/1685324709017001`
同步阻塞 IO
在讲解 同步阻塞 IO之前,我们首先理解一下 IO(Input/Output) 操作的基本概念。IO 操作通常指的是程序与外部设备之间进行数据交换的过程。这些外部设备可以是硬盘、网络接口或其他的外部系统。
在 IO 操作中,同步 和异步 区分主要在于程序在等待 IO 完成期间的行为。而 阻塞 和非阻塞 则是基于程序请求 IO 操作的执行稳定性。
同步 IO
在 同步 IO模型中,应用程序发起一个 IO 操作后,必须等待 IO 操作真正完成后,才能继续执行后续代码。在这个过程中,应用程序会挂起其操作,直到所需数据完成传输。
阻塞 IO
阻塞 IO是指在执行 IO 操作时,如果数据还未准备好,应用程序将会被挂起(即被阻塞),直到数据准备完成才返回结果,并让程序继续运行。这种模式下,应用程序完全依赖于 IO 操作的完成。
同步阻塞 IO 模型
在同步阻塞 IO 模型 中,程序执行 IO 操作时,会一直等待数据就绪,并且在此期间,程序不会做任何事情直至 IO 操作完成。例如,当你从硬盘读取一个文件时,你的程序会发起读取操作,并且挂起所有进程,直到文件内容被完全读取到内存中。
优点
- 简单直观:编码模型简单,易于理解和编写。
- 适用性广:绝大多数标准库和语言原生支持。
缺点
- 效率问题:当 IO 操作频繁且耗时时,阻塞模式会导致大量时间花费在等待上,效率较低。
- 资源利用率低:程序在等待 IO 完成时,不能做任何其他事情,导致 CPU 资源利用率不高。
综上所述,同步阻塞 IO是最基本的 IO 操作模型。它简单易用,但在处理大量或耗时的 IO 操作时,可能不是最有效率的选择。在设计系统时,根据应用的需求和特点,选择合适的 IO 模型是非常重要的。