Java - Beziehung zwischen Threads und CPUs

Ich bin ziemlich neu im Multithreading und arbeite an einem Projekt, bei dem ich versuche, 4 CPUs in meinem Java-Programm zu verwenden. Ich wollte sowas machen

int numProcessors = Runtime.getRuntime().availableProcessors();
ExecutorService e = Executors.newFixedThreadPool(numProcessors);

Stellt dies sicher, dass ein Thread pro CPU funktioniert? Zu dem Zeitpunkt, an dem ich die Threads erstelle, ist das System nicht ausgelastet. Einige Zeit später ist es jedoch extrem ausgelastet. Ich dachte, dass das Betriebssystem die am wenigsten ausgelastete CPU zum Erstellen der Threads auswählt, aber wie funktioniert es, wenn keine von ihnen zum Zeitpunkt der Erstellung besonders ausgelastet ist?

Auch der Thread-Pool-Dienst soll Threads wiederverwenden. Wenn er jedoch feststellt, dass auf einer anderen CPU mehr verfügbar ist, bricht er den Thread ab und erzeugt dort einen neuen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage