Sono piuttosto nuovo al multithreading e sto lavorando a un progetto in cui sto cercando di utilizzare 4 CPU nel mio programma Java. Volevo fare qualcosa comeJava - relazione tra thread e CPU
int numProcessors = Runtime.getRuntime().availableProcessors();
ExecutorService e = Executors.newFixedThreadPool(numProcessors);
Sarà questa garanzia che avrò un thread di lavoro per CPU? Nel momento in cui creo i thread, il sistema non sarà occupato, tuttavia dopo qualche tempo sarà estremamente occupato. Ho pensato che il SO scegliesse la CPU meno occupata per creare i thread, ma come funziona se nessuno di questi è particolarmente occupato al momento della creazione?
Inoltre, il servizio del pool di thread dovrebbe riutilizzare i thread, ma se vede che c'è più disponibilità su un'altra CPU, ucciderà il thread e ne creerà uno nuovo lì?
Il sistema operativo esegue la pianificazione dei thread, non Java. –