【发布时间】:2015-03-21 03:55:12
【问题描述】:
这将是最基本的,甚至可能是愚蠢的问题。当我们谈论使用多线程来更好地利用资源时。例如,应用程序从本地文件系统读取和处理文件。假设从磁盘读取文件需要 5 秒,处理需要 2 秒。
在上面的场景中,我们说使用两个线程一个读取另一个处理将节省时间。因为即使一个线程正在处理第一个文件,并行的其他线程也可以开始读取第二个文件。
问题:这是因为 CPU 的设计方式吗?因为有不同的处理单元和不同的读/写单元,所以这两个线程甚至可以在单核机器上并行工作,因为它们实际上是由不同的模块处理的?或者这需要多核。
对不起,我太笨了。 :)
【问题讨论】:
-
那么您的问题到底是什么?是“在只有一个内核的情况下多线程可以提高性能吗?”?
-
我的问题是这两个线程(一个从磁盘读取,另一个从进程读取)如何在单核机器上并行运行
-
如果一个文件被读取。一个线程可以与读取第二个文件的其他线程并行处理它吗?
-
这个答案可能很有趣:stackoverflow.com/a/5150840/1134700
-
在单核处理器中,根本没有并行性。线程和进程可能看起来是并行运行的,但实际上一切都是串行的
标签: java multithreading cpu