gpt4 book ai didi

java - java中执行IO操作的最佳线程数是多少?

转载 作者:太空狗 更新时间:2023-10-29 22:45:13 26 4
gpt4 key购买 nike

在 Goetz 的“Java Concurrency in Practice”,第 101 页的脚注中,他写道“对于像这样没有 I/O 和访问没有共享数据的计算问题,Ncpu 或 Ncpu+1 线程产生最佳吞吐量;更多线程无济于事,实际上可能会降低性能……”

我的问题是,在执行文件写入、文件读取、文件删除等 I/O 操作时,是否有关于使用线程数以达到最佳性能的准则?我知道这只是一个指导数字,因为磁盘速度和许多其他因素都会影响这一点。

不过,我想知道:20 个线程是否可以比 4 个线程在 4-cpu 机器上更快地将 1000 个单独的文件写入磁盘?

最佳答案

实际上,受 I/O 限制的应用程序仍然可以从多线程中受益匪浅,因为并行读取或写入几个文件比顺序读取或写入文件要快得多。在整体吞吐量因网络延迟而受到影响的情况下尤其如此。但也有这样的情况,一个线程可以处理它读取的最后一个内容,而另一个线程正在忙于读取,从而允许更高的 CPU 利用率。

我们可以整天谈理论,但正确的答案是让线程数可配置。我认为您会发现将它增加到 1 以上会提高您的速度,但也会出现 yield 递减点。

关于java - java中执行IO操作的最佳线程数是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1239918/

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