Was ist die optimale Thread-Pool-Größe für ein einfaches Programm, das CPU-basierte Aufgaben in Java ausführt?

Ich verwende einen Thread-Pool, um Aufgaben auszuführen, die zumeist auf der CPU-Basis mit ein wenig E / A ausgeführt werden und eine Größe haben, die größer ist als die Anzahl der CPUs.

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

Unter der Annahme, dass ein einfaches Programm alle seine Aufgaben an diesen Executor überträgt und sonst wenig tut, würde ein größerer Thread-Pool die Dinge verlangsamen, da das Betriebssystem seine Chance häufiger einschränken müsste, jedem Thread im Thread-Pool eine Chance zu geben Lauf.

Ist das richtig, und wenn ja, ist dies ein echtes Problem oder meistens theoretisch, d. H. Wenn ich die Threadpool-Größe auf 1000 vergrößere, stelle ich einen massiven Unterschied fest.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage