В Goetz "Java Concurrency in Practice" в сноске на стр. 101 он пишет: "Для таких вычислительных проблем, которые не используют I/O и не имеют доступа к общим данным, нити Ncpu или Ncpu + 1 обеспечивают оптимальную пропускную способность, больше потоков не помогает, и может фактически ухудшить производительность..."
Мой вопрос заключается в том, что при выполнении операций ввода-вывода, таких как запись файлов, чтение файлов, удаление файлов и т.д., существуют ли рекомендации по количеству потоков для достижения максимальной производительности? Я понимаю, что это будет всего лишь путеводный номер, поскольку в этом участвуют скорости диска и множество других факторов.
Тем не менее, мне интересно: может ли 20 потоков записывать 1000 отдельных файлов на диск быстрее, чем 4 потока на 4-процессорном компьютере?