Qual é o tamanho ideal do conjunto de encadeamentos para um programa simples executando tarefas baseadas em cpu em Java

Estou usando um pool de threads para executar tarefas, que são principalmente cpu com base em um pouco de E / S, de tamanho maior que o número de cpus.

Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1)

Assumindo o caso de um programa simples que submete todas as suas tarefas a este executor e pouco mais, eu suponho que ter um conjunto de threads maior retardaria as coisas, porque o sistema operacional teria que dividir o tempo de forma mais freqüente chance de dar a cada thread no threadpool a chance de corre.

Isso é correto, e se for este é um problema real ou principalmente teórico, ou seja, se eu aumentar o tamanho do pool de threads para 1000, eu notaria uma diferença enorme.

questionAnswers(2)

yourAnswerToTheQuestion