Java-Threading-Optimierung bei 100% CPU-Auslastung
Ich habe eine Anwendung, die die Bearbeitung einer Warteschlange akzeptiert und diese dann abarbeitet, um sie in unabhängigen Threads abzuschließen. Die Anzahl der Threads ist nicht massiv, sagen wir bis zu 100, aber dies sind intensive Aufgaben, die die CPU schnell um bis zu 100% belasten können.
Damit die meiste Arbeit am schnellsten erledigt wird: Am besten starte ich einfach mehr Threads, wenn ich mehr Arbeit erledigen muss, und überlasse es dem Java-Thread-Scheduler, die Arbeit zu verteilen 100% bringen mich schneller weiter?
Die Maschine ist meiner Java-App gewidmet.
BEARBEITEN:
Danke für den fantastischen Input!
Die Aufgaben sind unterschiedlich komplex und umfassen E / A, sodass ein niedriger Thread-Pool von beispielsweise 4 möglicherweise nur eine CPU-Auslastung von 20% bewirkt. Ich habe keine Ahnung, wie viele Aufgaben die CPU tatsächlich zu 100% beanspruchen.
Ich überlegte, ob ich die CPU über RMI überwachen und die Arbeit dynamisch hoch und runter wählen sollte, oder ob es mir einfach egal wäre, ob das Betriebssystem damit umgehen würde.