在 java 中执行 IO 操作的最佳线程数是多少?
在Goetz的“Java并发实践”中,在第101页的脚注中,他写道:“对于像这样的计算问题,如果不进行I / O并且不访问共享数据,Ncpu或Ncpu + 1线程产生最佳吞吐量;更多的线程无济于事,实际上可能会降低性能...”
我的问题是,在执行 I/O 操作(如文件写入、文件读取、文件删除等)时,是否有用于实现最大性能的线程数的准则?我知道这只是一个指导数字,因为磁盘速度和许多其他因素都会对此产生影响。
不过,我想知道:20个线程将1000个单独的文件写入磁盘的速度是否比4 cpu机器上的4个线程更快?