Quello che mi sto chiedendo (e quale documentazione trovo non è molto utile per capirlo), è ciò che accade a un core della CPU quando il Thread che sta eseguendo su di esso trasferisce il controllo a cose di dispositivi hardware (controller del disco, rete I/O, ...) per fare cose che la CPU/core non può aiutare. Questo core diventa disponibile per l'esecuzione di altri thread, o semplicemente si ferma e aspetta (anche se ci sono altri thread con lavoro CPU da fare che sono disponibili per la pianificazione)?In JVM, gli oggetti Thread sono legati direttamente ai core della CPU o c'è un Mapper in mezzo?
Il consiglio spesso dato di "tanti thread come nuclei" sembra suggerire quest'ultimo.
Java utilizza thread OS nativi. Pertanto la schedatura dei thread è il lavoro del sistema operativo. Il runtime Java crea solo i thread. – Robert
Il consiglio "tanti thread come core" è adeguato quando le attività sono vincolate alla CPU. Se stanno facendo un IO di rete, è possibile utilizzare più thread. E sì, certo, se un thread non ha bisogno della CPU, lo scheduler del SO lascerà che sia usato da un altro thread. –
Thx. Accettabile come risposta –