同步阻塞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模型是非常重要的。
最后更新于