如果我尝试使用Java BufferedReader读取文件。在我对缓冲区的前一块执行操作时,使用多重读取将缓冲区的下一块放入Ram会更快吗?
我知道读取速度特别慢,因此读取线程仍可能会被主线程打败,并且该程序无论如何都可能最终等待,但是运行了多个线程后,是否有任何理由不会加快读取速度?
答案 0 :(得分:1)
可能不是。 (但是,如果您有时间,我欢迎您尝试比较。)
正如您自己说的那样,处理线程可能只将大部分时间都花在等待读取线程上。而且-更重要的是-您可能会因为很少的收益而使软件复杂化(请参阅“过早优化”)。
这并不意味着这个主意不好。假设您的计算在计算上非常昂贵,而从中读取的位置则很慢(例如拨号调制解调器)。然后,是的,您可以受益于将读取和处理分散在不同的线程中,因此两者都不必尽可能地暂停。您仍然受最慢的线程的束缚,并且鉴于大量数据,其中一个线程最终将不得不等待另一个。
关于命名法的注释:我假设不是处理器硬件功能的市场名称“ hyperthreading”,而是一个编程概念的“多线程”。