gpt4 book ai didi

java - 从磁盘读取并并行处理

转载 作者:行者123 更新时间:2023-11-29 05:12:03 25 4
gpt4 key购买 nike

这将是最基本的问题,甚至可能是愚蠢的问题。当我们谈论使用多线程来更好地利用资源时。例如,应用程序从本地文件系统读取和处理文件。假设从磁盘读取文件需要 5 秒,处理它需要 2 秒。

在上面的场景中,我们说使用两个线程一个读取另一个处理会节省时间。因为即使一个线程正在处理第一个文件,其他并行线程也可以开始读取第二个文件。

问题:这是因为CPU的设计方式吗?因为有不同的处理单元和不同的读/写单元,所以这两个线程甚至可以在单核机器上并行工作,因为它们实际上是由不同的模块处理的?或者这需要多核。

对不起,我太笨了。 :)

最佳答案

在单处理器上,多线程是通过时间分片来实现的。一个线程会做一些工作,然后它会切换到另一个线程。

当一个线程正在等待某些 I/O,例如文件读取时,它会过早地放弃它的 CPU 时间片,允许另一个线程使用 CPU。

即使在单核上,与单线程相比,整体吞吐量也有所提高。

下面的键:

  • = 在 CPU 上工作
  • - 输入/输出
  • _ 空闲

单线程:

====--====--====--====--

两个线程:

====--__====--__====--__
____====--__====--__====

因此,您可以看到如何在 CPU 保持忙碌的同时完成更多工作,而 CPU 以前一直在等待。存储设备的使用也越来越多。

关于java - 从磁盘读取并并行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28087393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com