计算机系统应用教程网站

网站首页 > 技术文章 正文

面试官:谈谈对阻塞、非阻塞、多路复用IO的理解?如何满分回答

btikc 2024-10-25 10:50:09 技术文章 6 ℃ 0 评论

体育生转行做码农?文科生要转码吗?土木工程师该如何转型?

现在是学Java的好时机吗?你能介绍一下阻塞式和非阻塞式的IO模型吗?在Java中,IO模型有三种,分别是阻塞式、非阻塞式和多路复用式。

举个例子,如果你在进行文件拷贝的操作,阻塞式的操作就是需要等待两个阶段,一个是等待数据,另一个是发送数据。

如果在进行系统调用后,发现需要读取的文件还未到达,阻塞式操作就会一直等待,直到数据到达才能返回。

阻塞式操作的缺点是效率低,因为一个线程只能处理一个连接请求。非阻塞式操作则是在等待数据的过程中返回一个空结果,用户需要不断轮询,直到数据到达后再进行操作。

当然,这两种方式都存在一些问题。非阻塞式操作的缺点是线程切换频繁,CPU利用率不高。多路复用式操作是在阻塞式操作的基础上实现的,可以同时处理多个连接请求,提高了效率。

但是多路复用式操作也存在一些问题,比如需要通过不断轮询来确认数据是否到达,可能会导致CPU利用率不高。

因此,人们提出了第三种方式——多路复用式IO模型。多路复用式IO模型的实现方式有三种,分别是select、poll和epoll。它们分别解决了不同的问题。

如果你对这些感兴趣,我们可以继续探讨。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表